본 글은 제가 Python 을 공부하며 알게 된 내용을 정리하기 위해 작성하였습니다. 생략된 부분이 많고, Python 의 특징을 다른 언어들과 비교하는 방식으로 기술하기도 하므로, 처음 프로그래밍을 접하는 분에게는 적합한 글이 아닐 수 있습니다.
체계적으로 Python 을 학습하고자 하는 분은 점프 투 파이썬 | 박응용 을 참고하기 바랍니다. 프로그래밍을 처음 접하는 사람들을 위해 쓴 책으로, 링크된 사이트에서 책의 내용 전부를 볼 수 있습니다. 현재 e-book 으로도 판매중입니다. 초보 학습자를 위한 강추 Python(Python) 링크 | 잉고래 의 링크도 도움이 될 것입니다.
다른 언어를 학습한 경험이 있는 분에게는 빠르게 활용하는 파이썬 3.2 프로그래밍 | 신호철, 우상정, 최동진을 권합니다. 풍부한 예제와 함께 중요 내용을 간결하게 담아낸 좋은 책입니다.
아래 내용의 출처는 위에서 소개한 두 권의 도서와, 파이썬 공식 홈페이지의 문서들 입니다.
변수
Python 은 Java 처럼 garbage collector 가 자동으로 collecting 하지는 않지만, Garbage Collector 인 gc 모듈을 사용할 수 있습니다. C 의 free() 에 해당하는 Python 함수는 del() 입니다.
아래는 변수를 선언하는 여러 가지 방법입니다.
a, b = 10, 20
print(a,b) # 10, 20 출력
a = b = 10
print(a,b) # 10, 10 출력
(a, b) = (10, 20)
print(a,b) # 10, 20 출력
[a,b] = [10, 20]
print(a,b) # 10, 20 출력
Swap : Python 의 Swap 은 정말 간편합니다. 좀 놀랐습니다. a 와 b를 swap 하고 싶으면
a, b = b, a
이 때, Python 은 내부적으로 Tuple 을 이용 합니다.
LGB 규칙 : 변수(또는 함수)명을 탐색할 때는 Local → Global → Built-in name space 순으로 탐색 합니다. 클래스 내에서는 self 키워드를 사용하지 않고 변수를 호출하면 위와 탐색 순서가 같고, "self.*" 로 변수를 호출하면 인스턴스 객체의 변수 → sub class 의 변수 → super class 의 변수 순으로 탐색 합니다. 이는 중복된 변수와 함수를 최소화, 메모리 사용의 효율성을 높이기 위함입니다.
산술 연산자
산술 연산자 예시
print(10 / 3) # 3.333333 : double 출력
print(10 // 3) # 3 : 나머지 버림
print(2 ** 4) # 16 : 2 의 4제곱
논리 연산자
Python 의 논리 연산자는 visual basic 과 같이 and, or, not 이 있습니다. & 와 | 는 각각 and, or 과 같으나 단축평가(Short-circuit evaluation) 가 이루어진다는 차이가 있습니다.
print(1 == 2) # False
print(1<0 and 2/0) # False
print(1<0 & 2/0) # 에러 발생!
print(1>0 or 2/0) # True
print(1>0 | 2/0) # 에러 발생!
print(not 1==2) # True
in, not in 연산자
myList = [1, 2, 3, 4]
# 모두 True 를 출력
print(1 in myList)
print(5 not in myList)
Java 에서는 참조형 변수를 비교할 때 == 연산자는 주소값을, equals() 연산자는 내부 내용을 비교 합니다. Python 은 반대로 == 연산자는 내부 내용을, is 연산자는 주소값을 비교 합니다.
'프로그래밍' 카테고리의 다른 글
[Python] 파이썬 기본내용 정리(5) - 함수와 모듈 (0) | 2013.07.29 |
---|---|
[Python] 파이썬 기본내용 정리(4) - 제어문 (0) | 2013.07.29 |
[Python] 파이썬 기본내용 정리(2) - 자료구조 (0) | 2013.07.26 |
[Python] 파이썬 기본내용 정리(1) - 자료형 (0) | 2013.07.25 |
[Java] regular expression(정규표현식) 사용하기 (0) | 2013.07.22 |