2. 파이썬 언어의 기본문형




1 파이썬 예약어 및 내장 함수


1-1 예약어 (Reserved Words)

  • 예약어 (또는 키워드)
    • 파이썬에서 이미 문법적인 용도로 사용되고 있기 때문에 변수명등의 식별자로 사용하면 안되는 단어들

1-2 예약어의 종류 알아보기

In [2]:
import keyword

print(keyword.kwlist)
print()
print(len(keyword.kwlist))

# python3에 추가됨 : 'False', 'None', 'True', 'nonlocal' 
# python3에서는 제거됨 : 'exec', 'print'
#
# Python2 : 
# ['and', 'as', 'assert', 'break', 'class', 
# 'continue', 'def', 'del', 'elif', 'else', 
# 'except', 'exec', 'finally', 'for', 'from', 
# 'global', 'if', 'import', 'in', 'is', 'lambda', 
# 'not', 'or', 'pass', 'print', 'raise', 'return', 
# 'try', 'while', 'with', 'yield']
#
# 31
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

33

1-3 내장 함수 (Built-in Function)

  • abs(x)
    • 수치형 자료 x에 대해 x의 절대값을 반환하는 함수
In [3]:
print(abs(3))
print(abs(-3))
3
3
  • max(s)
    • 시퀀스 자료형(문자열, 리스트, 튜플)을 입력받아 그 자료가 지닌 원소 중 최대값을 반환하는 함수
In [4]:
print(max(1, 2))
print(max([1, 2, 3]))
print(max("python"))
2
3
y
  • min(s)
    • 시퀀스 자료형(문자열, 리스트, 튜플)을 입력받아 그 자료가 지닌 원소 중 최소값을 반환하는 함수
In [5]:
print(min(1, 2))
print(min([1, 2, 3]))
print(min("python"))
1
1
h
  • pow(x,y)
    • 수치형 자료형 x, y에 대해 x의 y승을 반환하는 함수
In [6]:
print(pow(2, 4))
print(pow(3, 3))
print(pow(2, -1))
16
27
0.5
  • chr(i)
    • 정수 형태의 Unicode값을 입력으로 받아 그에 해당하는 문자를 반환하는 함수
    • 인수 i의 범위: 0부터 0x10ffff (Decimal표현으로 1114111) 까지
In [7]:
print(chr(97))
print(chr(65))
print(chr(48))
a
A
0
  • str(object)
    str(object='') -> str
    • 임의의 객체 object에 대해 해당 객체를 표현하는 문자열을 반환하는 함수
    • Create a new string object from the given object.
In [8]:
print(str(3))
print(str([1, 2]))
3
[1, 2]
  • range
     
    range(stop) -> range object
    range(start, stop[, step]) -> range object 
    • 수치형 자료형으로 start, stop, step 등을 입력받아 start부터 stop까지의 정수값들이 순차적으로 들어 있는 range object를 리스트로 반환하는 함수
    • Python2에서는 range()의 결과로 곧바로 리스트가 반환됨
    • 인수가 하나(stop)인 경우
      • 0(디폴트 값)부터 stop-1까지의 정수 리스트를 반환한다.
    • 인수가 두 개(start, stop)인 경우
      • start부터 stop-1까지의 정수 리스트를 반환한다.
    • 인수가 세 개(start, stop, step)인 경우
      • start부터 stop-1까지의 정수를 반환하되 각 정수 사이의 거리가 step인 것들만 반환한다.
In [2]:
print(range(10))
print(range(3, 10))
print(range(3, 10, 2))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# [3, 4, 5, 6, 7, 8, 9]
# [3, 5, 7, 9]
print()

print(list(range(10)))
print(list(range(3, 10)))
print(list(range(3, 10, 2)))
range(0, 10)
range(3, 10)
range(3, 10, 2)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
[3, 5, 7, 9]
  • type(object)
    • 임의의 객체 object의 자료형을 반환하는 함수
In [25]:
print(type(-1))
print(type('abc'))
print(type([1, 2, 3]))
# <type 'int'>
# <type 'str'>
# <type 'list'>
# type 에서 class로 바뀜
<class 'int'>
<class 'str'>
<class 'list'>

2 파이썬 식별자와 변수 사용


2-1 식별자 만드는 법

  • 파이썬 식별자는 변수, 함수, 모듈, 클래스 또는 객체를 식별하는데 사용되는 이름이다.
  • 식별자의 조건

    • 대소문자 구별함
    • 식별자는 문자 A~Z 또는 a~z과 언더바(_)로 시작할 수 있다.
    • 식별자 첫 시작을 제외하고 식별자 내에 숫자(0~9)를 사용할 수 있다.
    • 특수문자 @, $, % 등은 식별자의 어느 자리에도 올 수 없다.

    • 예를 들어 다음과 같은 것은 식별자가 될 수 없음

2-2 변수명 만들 때 조심할 점

  • 예약어, 내장함수, 모듈 이름을 변수명으로 만드는 일이 없도록 할것
In [26]:
print(str(12345))
12345
In [27]:
str = 'abc'

print(str(12345))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-27-9612f3c17921> in <module>()
      1 str = 'abc'
      2 
----> 3 print(str(12345))

TypeError: 'str' object is not callable

2-3 변수의 생성 및 사용

  • 파이썬에서 변수가 생성되는 시점은 해당 변수에 임의의 값이 할당될 때이다.
In [28]:
a = 1
print(a)
1
  • 변수의 생성 없이 곧바로 사용할 수 없다.
In [29]:
print(b)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-29-4851c8fca996> in <module>()
----> 1 print(b)

NameError: name 'b' is not defined

2-4 변수의 삭제

  • del 이라는 예약어 사용
In [30]:
b = 2
print(b)

del b
print(b)
2
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-30-2a13a1bf33fc> in <module>()
      3 
      4 del b
----> 5 print(b)

NameError: name 'b' is not defined

3 파이썬 기초 문형


3-1 주석문

In [31]:
#이것은 주석입니다.
import sys #이것도 주석입니다.

3-2 연속라인

In [32]:
a = 1
b = 3
if (a == 1) and \
(b == 3):
    print('connected lines')
connected lines
In [33]:
a = 1
b = 3
if (a == 1) and (b == 3):
    print('connected lines')
connected lines

3-3 할당문 (Assignment)

In [34]:
a = 1
b = a
In [35]:
1 + 3 = a
  File "<ipython-input-35-3aa35fdab4b7>", line 1
    1 + 3 = a
             ^
SyntaxError: can't assign to operator
In [36]:
a = 1
a = a + 1
print(a)
2
In [37]:
c, d = 3, 4
print(c, d)

x = y = z = 0
print(x, y, z)

e = 3.5; f = 5.6
print(e, f)
3 4
0 0 0
3.5 5.6
  • 두 변수의 값을 swap하는 방법
In [38]:
e = 3.5; f = 5.6
e, f = f, e
print(e, f)
5.6 3.5
  • 아래에서 b = c + d는 식(Expression)이 아니라 문(Statement)이기 때문에 a에 할당될 수 없다.
In [39]:
a = (b = c + d)
  File "<ipython-input-39-79d71c957091>", line 1
    a = (b = c + d)
           ^
SyntaxError: invalid syntax

3-4 확장 할당문

In [40]:
a = 1
a += 4
print(a)
5
In [41]:
a = 10
a -= 3
print(a)
7
In [42]:
a = 10
a *= 2+3
print(a)
50

3-5 객체와 할당

  • 객체의 변수는 해당 객체의 레퍼런스를 지니고 있음
  • a = 1이라는 Statement에서 a는 이름, 1은 객체이며 a 변수는 1이라는 객체를 가리킨다.
    • 즉, a 변수는 1 객체의 레퍼런스를 지니고 있음
In [43]:
a = [1,2,3]
b = [10, a, 20]
c = ['x', a, 'y']

print(a)
print(b)
print(c)
[1, 2, 3]
[10, [1, 2, 3], 20]
['x', [1, 2, 3], 'y']

image

In [44]:
a[1] = 1000

print(a)
print(b)
print(c)
[1, 1000, 3]
[10, [1, 1000, 3], 20]
['x', [1, 1000, 3], 'y']

4 콘솔 입출력


4-1 콘솔 입력

  • 콘솔 (Console)
    • 윈도우즈에서는 Command창, 리눅스/맥에서는 Terminal창
    • 각 IDE (예, 이클립스)에서는 별도의 콘솔 창이 제공됨
  • Python2에서, raw_input(): 문자열 입력 내장함수
  • Python3부터는 input()만을 사용
    • raw_input() 내장함수는 지원하지 않음
In [46]:
# raw_input 에서 input 으로 변경
# name = raw_input('name?')
name = input('name?')
name?홍길동
In [47]:
print(name)
홍길동
  • int(): 문자열을 정수로 변환하는 내장함수
    int(x=0) -> integer
    int(x, base=10) -> integer
In [16]:
print(int(3.14)) # For floating point numbers, this truncates towards zero. 0이 되는 방향으로 소숫점 이하를 버림
print(int()) # return 0 if no arguments are given. 그냥 int()는 0을 리턴
3
0
In [1]:
# k = int(raw_input('int : '))
k = input('str : ')
print(k)
print(type(k))

print()

k = int(input('int : '))
print(k)
print(type(k))
int : 10
10
<class 'str'>

int : 10
10
<class 'int'>
In [2]:
# Python3에서 input()의 기능
# Read a string from standard input.  The trailing newline is stripped.
In [29]:
? input
In [52]:
k = input('expr:')
print(k)
# expr:30 + 50
# 80
expr:30+50
30+50

4-2 콘솔 출력

  • print: 화면에 자료를 출력하는 보편적인 statement
  • 하나의 print로 두 개 이상의 자료를 출력할 때에는 , 사용
In [53]:
print(4 + 5, 4 - 2)
9 2
  • 세미콜론(;)은 순차적으로 입력된 각 statement를 분리함
In [54]:
print(1); print(2)
1
2
  • Python2에서 기본적으로 print는 마지막에 줄바꿈을 수행한다. 그러나 콤마(,)가 마지막에 있으면 줄바꿈을 하지 않음
  • Python3에서는 콤마를 붙이나 안붙이나 상관없이 줄바꿈을 수행
In [3]:
print(1),
print(2)
#1 2
print()
print(1)
print(2)
1
2

1
2
  • print를 여러번 사용하여 두 개 이상의 자료를 newline 없이 출력할 때에는 end=' '를 사용 (디폴트는 end='\n')
In [8]:
print(1, end=", ")
print(2)

print()

print(1, end=" ")
print(2)
1, 2

1 2
  • +연산자는 숫자와 문자열에 대한 연산을 지원하지 않는다.
In [60]:
print(12 + 'spam')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-60-5e105a439075> in <module>()
----> 1 print(12 + 'spam')

TypeError: unsupported operand type(s) for +: 'int' and 'str'
In [61]:
print('12' + 'spam')
12spam

참고 문헌: 파이썬(열혈강의)(개정판 VER.2), 이강성, FreeLec, 2005년 8월 29일