Python 2 와 Python 3의 차이점
코드를 유지보수 하다보면 Python2로 작성된 것을 Python3으로 Migration 할 때가 많다.
이 때 생각보다 두 버전간의 backward compatibility
를 지원하지 않는 부분이 많다는 것을 알게 된다.
이러한 부분을 다룬다.
xrange vs range
python3는 더이상 xrange
를 지원하지 않는다.
무조건 range
를 쓴다. 그리고 내부적으로 그형태가 약간 다르므로xrange
를 무조건 range
로 대체 할 수도 없다.
python2에서 xrange
는 정해진 숫자 만큼 object를 생성한다. 이는 list를 생성하는 range와는 다른 방식이고
looping을 할 때 약간 더 memory efficint 때문에 빠르다. 그래서 python2를 보면 대다수가 xrange를 사용 한다.
python 2 | python 3
#------------------------
xrange(10) | range(10)
range(10) | list(range(10))
# example
# python2
[10] + xrange(9)
# python3
[10] + list(range(9))
만약 python3 코드를 python2에서 수행한다면 아래와 같이 입력해주면 된다.
import sys
if sys.version_info < (3,):
range = xrange
python2는 print "string"
python3는 무조건 함수 호출이다. print ("string")
나눗셈
python2는 정수 / 정수 = 졍수 (5/2=2)
python2는 정수 / 정수 = 실수 (5/2=2.5)
생각보다 이런 사소한 문제 때문에 기능이 이상하게 동작 할때가 많다.
자동 타입할당이 편하지만 떄로는 디버깅할 때 상당히 난감하다.
'Computer Science > Python' 카테고리의 다른 글
Jupyter 서버 설치 및 실행법 (8) | 2018.04.25 |
---|---|
Python 파라메터 앞에 *와 **의 의미 (*args, **kwargs) (0) | 2017.02.02 |
PyCharm을 우분투 14.04설치 하는 방법 (1) | 2016.04.13 |
(기록 보관용) IPython 및 Jupyter를 Window에 설치 및 설정 (1) | 2016.03.25 |
Data Science를 위한 Python package 꾸러미들 (0) | 2015.12.07 |