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 = xrangepython2는 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 |