Python

Python, 2와 3의 차이

hwangyoungjae 2016. 4. 21. 20:11

 

-. 함수형태로 변한 print

python 2

print “python”

python 3

print(“python”)

입력인자를 지정해줄수 있음

sep=” “(구분자)

end=”\n”(끝라인)

file=sys.stdout(출력)

 

 

-. long형이 없어지고 ing형으로 통일됨

python 2

 >>> type(2**63)

 <type ‘long’>

python 3

 >>> type(2**63)

 <class ‘int’>

 

2에서는 sys.maxint이하의 값은 int로 처리되고 그 이상의 값은 long으로 처리되었는데 3에서부터는 모두 int로 처리됨

 

-. [ int / int] 의 결과는 float으로 처리됨

python 2

>>> 1/2

0

>>> 3/2

1

python 3

>>> 1/2

0.5

>>> 3/2

1.5

 

2에서는 int / int의 결과는 int로만 나왔는데 3부턴 int / int float로 반환됨

 

-. String, Unicode 체계가 바뀌었습니다.

python 2

>>> type("")

<type 'str'>

>>> type("".decode("utf8"))

<type 'unicode'>

>>> type(u"")

<type 'unicode'>

python 3

>>> type(u"")

SyntaxError: invalid syntax

>>> type("")

<class 'str'>

>>> type("".encode("cp949"))

<class 'bytes'>

 

Python 2에서는 일반스트링이 인코딩이 있는 문자열이었고 유니코드가 따로 있었는데 Python 3에서는 유니코드를 따로지정하지 않고 일반 스트링이 기존의 유니코드와 동일하며인코딩이 있는 문자열은 bytes로 표현됨.

 

[C:\Python32\Tools\Scripts\2to3.py]을 이용하면 2에서 3으로 간단한 변환이 가능함하지만 만능은 아님