본 글은 제가 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 연산자는 주소값을 비교 합니다.