본문 바로가기
Programming/etc

파이썬 2.x 버전과 3.x 버전 차이

by 제타 2018. 4. 22.
반응형

수 많은 파이썬 프로그램들이 아직 2.x 버전으로 남아있다. 그런데 버전이 3으로 오르면서 2.x 버전들과 하위 호환성을 전혀 유지않고 있다.

따라서 아직 2.x을 쓰는 사람들일지라도 이제는 3버전을 이제라도 써야한다.

필자는 요즘 핫한 AI, 머신러닝, 딥러닝 쪽을 공부하려고 파이썬을 하는 것이 아니라 sql server 2017부터 파이썬을 코드에 섞어쓸 수 있기 때문에 파이썬을 공부하려고 했다. ms data open day에 참석하고 앗 이제는 mssql에서도 파이썬을 쓸 수 있고 이것이 대세가 될 것이다!라고 생각해서 바로 책을 사놨지만 제대로 공부를 하지는 못하고 있는 것이 아무래도 업무 시에 파이썬을 직접적으로 사용을 안하니까 공부를 안하게 된다. 필자는 현재 sql server 2016을 사용하고 있기 때문이다. 아마 2019년 쯤 되면 17버전도 안정화가 되기 때문에 2016에서 버전업을 하지 않을까 예상해본다. (빨리 그날이 왔으면..)

아무튼 빨리 파이썬을 적용해보고 싶다. 사실 쿼리문으로 힘들게 짜는 것도 파이썬 코드로는 몇줄이면 아마 처리될 것이 분명하기 때문이다.


일단 파이썬 2.x과 3버전의 차이를 포스팅 해야겠다. 

대충 공부한 바로는 다음 내용과 같다.


print가 함수 형태로 변경되었다


2.x 버전에서는 다음과 같다.

>>> print "welcome to","python"

welcome to python


하지만 3버전에서는 다음처럼 함수형태로 수정되었다.

>>> print("welcome to","python")

welcome to python


그리고 매개변수로 구분자, 끝라인, 출력을 지정할 수 있다.

예를 들면 다음과 같다.

>>> print("welcome to", "python",sep="~", end="!", file=sys.stderr)

welcome to~python!


이렇게 매개변수로 sep, end, file을 지정할 수 있게 된 것이 함수형태로 변경되면서 낳은 차이점이다.


이 외에도 입출력 관련해서 raw_input이 input으로 바뀌고, as, with 등 예약어가 추가되었다. 그리고 새로운 문자열 포맷팅을 제공한다.


long 형이 없어지고 int로 통일되었다.

예를 들어서 2.x 버전에서는 type(3*40)이 long을 리턴하지만 3버전에서는 class int로 리턴한다.


int / int는 float으로 처리된다.

2.x 버전에서는 1/2가 0으로 계산되지만 3 버전에서는 0.5로 계산된다.


파이썬 2.x 버전에서는 일반 문자열이 인코딩이 있는 문자열이고 유니코드가 따로 있었는데 파이썬 3에서부터는 유니코드를 따로 지정하지 않고도 일반 문자열이 기존의 유니코드와 ㄱㅌ다. 그리고 인코딩이 있는 문자열은 bytes로 표현된다.




반응형