파이썬(Python) 언어는 기본적으로 인터프리터(interpreter)를 통해 실행되는 스크립트 언어 입니다. (로딩 속도를 높이기 위해 바이트코드로 컴파일 해서 사용하는 것도 가능합니다.)
파이썬은 변수를 선언할 때 타입을 지정하지 않습니다. 값을 할당하면 그때 동적으로 타입이 정해집니다.
>>> a = 1 >>> a = '1234' >>> a = True |
일단 값이 할당되어 타입이 정해지면 연산시 타입검사가 이루어집니다.
>>> a = '1234' >>> b = 4 >>> c = a + b Traceback (most recent call last): File "<pyshell#56>", line 1, in <module> c = a + b TypeError: must be str, not int |
타입이 다를 경우 형변환을 해줘야 연산에 사용할 수 있습니다. 수치 타입과 boolean 타입은 서로 자동으로 형변환이 되어 집니다. boolean타입의 True와 False 는 수치타입과 연산시 각각 1, 0 으로 평가 됩니다.
>>> a = 1 # int >>> b = 0.1 # float >>> c = True # boolean >>> d = 1 + 2j # 복소수 >>> a + b + c + d (3.1+2j) |
변수의 타입을 알아보려면 type() 함수를 사용하면 됩니다.
>> a = 1 >> type(a) <class 'int'> |
1. 식별자(identifier)
식별자(identifier)는 언어에서 변수명, 함수명 등을 지정하는데 사용되어지는것 입니다.
Python 에서는 식별자로 한글, 영문자(letter), 숫자(digit), 밑줄(_) 을 사용할 수 있습니다. 식별자의 시작은 숫자외 다른 문자로 시작합니다. 영문자는 대소문자를 구분합니다.
2. 데이터 타입 및 연산자
파이썬은 많은 내장 데이터 타입(built-in data type)들을 가지고 있습니다.
- boolean : 참, 거짓 두가지 값을 표현합니다.
- int(integer) : 정수입니다.
- float(floating-point number) : 실수 입니다.
- complex number : 복소수 입니다.
- str(string) : 문자열 입니다.
- list : 순서가 있는 값들의 집합 입니다.
- tuple : 리스트와 같이 순서가 있는 값들의 집합이지만 읽기전용 입니다.
- set : 순서가 없고 중복되지 않는 값들의 집합 입니다.
- dict(dictionary) : 키와 값의 쌍으로 데이터를 저장합니다.
2.1 boolean 타입
boolean 타입은 True, Flase 둘 중의 하나의 값을 가집니다. True, False 값은 대소문자를 구분합니다. boolean 타입에 사용할 수 있는 연산자는 and, or, not 이 있습니다.
>>> x = False >>> y = True >>> c = x or y >>> c True >>> c = x and y >>> c False >>> c = not x True |
and와 or 연산자는 short-circuit 연산자 입니다. or 연산자에서는 첫번째 인자가 False 일 경우만 두번째 인자가 평가됩니다. and 연산자의 경우에는 첫번째 인자가 True 인 경우에만 두 번째 인자가 평가됩니다. not 연산자는 불린 연산자가 아닌 다른 연산자보다 우선 순위가 낮습니다.
2.2 비교 연산자
파이썬에서 비교연산자는 8가지가 있습니다. 이것들은 모두 같은 우선순위를 가집니다.
< : 작다 <= : 작거나 같다 > : 크다 >= : 크거나 같다. == : 같다. != : 다르다. is : 동일한 객체이다. is not : 동일한 객체가 아니다. |
비교 연산자는 마음대로 연결하여 사용할 수 있습니다. 예를 들어 x < y <= z 처럼 쓸 수 있습니다. 이것은 x < y and y <= z 와 동일합니다. boolean 타입과 수치형(int, float, complex) 는 서로 비교할 수 있지만, 다른 타입들을 같은 타입끼리만 비교할 수 있습니다.
2.3 수치형 및 연산자
정수(int), 실수(float), 복소수(complex)가 있습니다. 사용할 수 있는 연산자는 다음과 같습니다.
x + y : 두 값을 더합니다. x - y : x에서 y를 뺍니다. x * y : 두 값을 곱합니다. x / y : x에서 y를 나눕니다. x // y : x에서 y를 나눈 몫을 반환합니다. x % y : x에서 y를 나눈 나머지를 반환합니다. -x : 부호를 바꿉니다. +x : 변화가 없습니다. abs(x) : 절대값을 반환합니다. int(x) : 숫자 문자열이나 실수를 정수로 변환합니다. float(x) : 숫자 문자열이나 정수를 실수로 변환합니다. complex(re, im) : 실수부분이 re이고 허수부부이 im 인 복소수를 반환합니다. c.conjugate() : 켤레복소수(허수부 부호가 바뀐 값)를 반환합니다. divmod(x, y) : (x // y, x % y) 를 반환합니다.(tuple) pow(x, y) : x의 y승 값을 반환합니다. x ** y : x의 y승 값을 반환합니다. |
2.4 정수형에 대한 비트 연산자
비트 연산자는 정수값에 대해서만 사용됩니다. 음수일 경우 2의 보수가 사용됩니다.
x | y : or 연산입니다. x ^ y : xor 연산입니다. x & y : and 연산입니다. x << n : 왼쪽으로 n번 쉬프트 합니다. x >> n : 오른쪽으로 n번 쉬프트 합니다. ~x : 비트를 반전시킵니다. |
2.5 문자열
문자열 literal 은 작은따옴표(') 또는 큰따옴표(")로 문자를 둘러싸서 만들 수 있습니다. 여러줄의 데이터를 작은따옴표 또는 큰따옴표 세 개를 사용해서 둘러쌉니다.
>>> a = 'test' >>> b = "test" >>> c = """This is test. """ >>> c 'This\nis\ntet.\n' |
2.6 시퀀스 타입
list 는 순서가 있는 데이터의 집합으로 대괄호([])와 콤마(,)를 사용하여 값을 정의합니다.
>>> a = [1, 'a', 3] # 서로 다른 타입을 값으로 가질 수 있습니다. |
tuple 은 list 와 같지만, 읽기전용입니다. 소괄호를 사용하거나 아무것도 없이 정의합니다.
>>> a = (1, 2, 3) >>> b = 4, 5, 6 |
공통적으로 사용되는 연산자를 다음과 같습니다.
x in s : s에 x 값을 포함하고 있으면 True, 아니면 False x not in s : s에 x 값을 포함하지 않으면 True, 아니면 False s + t : s와 t 를 연결합니다. s * n or n * s : s 를 n 번 추가 합니다. s[i] : s내의 i 번째 아이템을 반환합니다.(i 는 0부터 시작) s[i:j] : s에서 i부터 j 까지 잘라서 반환합니다. s[i:j:k] : s에서 i부터 j 까지 k씩 건넌 값을 잘라서 반환 합니다. len(s) : s의 길이를 반환합니다. min(s) : s에서 가장 작은 값을 반환합니다. max(s) : s에서 가장 큰 값을 반환합니다. s.index(x[, i[, j]]) : s에서 x 를 처음 찾은 위치를 반환합니다. 추가 인자가 주어지면 그 범위에서 찾습니다. s.count(x) : s에 x 를 몇번 나오는지 반환합니다. |
다음은 변경가능한 시퀀스 타입에 사용할 수 있는 연산 입니다.
s[i] = x : s의 i 번째 값을 x 로 바꿉니다. s[i:j] = t : s의 i부터 j 까지의 내용을 반복자 t의 내용으로 바꿉니다. del s[i:j] : s의 i부터 j 까지를 지웁니다. s[i:j] = []와 같습니다. s[i:j:k] = t : s[i:j:k]의 아이템을 반복자 t의 내용으로 바꿉니다. t의 길이는 s[i:j:k] 의 길이와 같아야 합니다. del s[i:j:k] : list 로부터 s[i:j:k] 를 지웁니다. s.append(x) : list의 끝에 x 를 추가합니다.(s[len(s):len(s)] = [x] 와 같음) s.clear() : s로 부터 모든 아이템을 지웁니다. (del s[:] 와 같음) s.copy() : s로부터 얕은 복사를 합니다. (s[:] 와 같음) s.extend(t) or s += t : s뒤에 t 를 붙입니다.(대부분의 경우 s[len(s):len(s)] = t와 같음) s *= n : s의 내용을 n 번 반복합니다. s.insert(i, x) : s의 i번째에 x 를 삽입합니다. (s[i:i] = [x] 와 같음) s.pop([i]) : s에서 i번째 아이템을 반한하고, s에서는 삭제합니다. s.remove(x) : s에서 값이 x 인 첫번째 아이템을 삭제합니다. s.reverse() : s의 내용을 역순으로 만듭니다. |
※ 얕은 복사(shallow copy) 는 실제 값을 복사하는 것이 아니라 위치(주소)만 복사하는 것입니다.
2.7 Set 타입
set 객체는 순서가 없고 중복되지 않는 값들의 집합입니다. set은 중괄호를 사용하여 만들 수 있습니다.
>>> a = {1, 2, 3} |
순서가 없으므로 a[1] 형태로 사용할 수 없습니다.
set은 일반적으로 소속 검사(membership testing), 시퀀스에서 중복 제거를 하거나 교집합, 합집합, 차집합, 대칭차집합(symmetric difference)을 구하는데 사용됩니다.
2.8 Mapping 타입
dict 객체는 키와 값의 쌍으로 된 값들을 가지는 객체입니다. 중괄호 내에 콜론(:)으로 키와 값의 쌍을 지정하여 만들 수 있습니다.
>>> a = {'a':1, 'b':2, 'c':3} >>> a['a'] 1 |
3. 형변환(Type conversion)
boolean 타입과 수치 타입(int, float, complex)는 서로 명시적인 형변환 없이 연산이 가능합니다. 다른 타입은 명시적으로 변환하여야 합니다.
int() : 문자열, 실수를 정수로 변환합니다. float() : 문자열, 정수를 실수로 변환합니다. str() : 정수, 실수, list, tuple, dictionary 를 문자열로 변환합니다. list() : 문자열, tuple, dictionary 를 list 로 변환합니다. tuple() : 문자열, list 를 tuple 로 변환합니다. |
'프로그래밍 > Python' 카테고리의 다른 글
파이썬 문법 5 - 람다(lambda) 함수 (7) | 2018.04.04 |
---|---|
파이썬 문법 4 - 함수(function) (0) | 2018.04.04 |
Python 문법 3 - Flow Control(흐름 제어) (0) | 2018.04.03 |
Python 문법 1 - comment, 문장, 블럭, 들여쓰기 (0) | 2018.04.03 |
Python 3.6과 PyDev 설치하기 (0) | 2018.04.03 |