[파이썬] 파이썬 2와 파이썬 3의 표준 라이브러리 모듈 차이

파이썬은 동적이고 간결한 문법을 가진 인기있는 프로그래밍 언어입니다. 파이썬은 많은 개발자들에게 선호되는 언어로 자리 잡았지만, 파이썬 3 버전으로의 전환은 많은 도전을 가져왔습니다. 이전의 파이썬 2와 비교하여 파이썬 3는 많은 개선 및 변경 사항을 포함하고 있습니다. 이에 따라 표준 라이브러리 모듈에도 일부 변화가 생겼습니다.

파이썬 2와 파이썬 3 간의 표준 라이브러리 모듈 차이를 살펴보겠습니다.

1. print 함수

파이썬 2에서는 print 문이 함수가 아닌 문(statement)으로 사용되었습니다. 따라서 괄호를 사용하지 않았습니다. 예를 들어, 다음과 같이 사용되었습니다.

print "Hello, World!"

반면에 파이썬 3에서는 print 함수로 변경되었습니다. 이로 인해 괄호를 사용해야 합니다. 예를 들어,

print("Hello, World!")

2. range 함수

파이썬 2에서의 range 함수는 메모리에 모든 범위의 값을 생성하여 저장했습니다. 그 결과, 큰 범위의 값들을 생성할 때 메모리 문제가 발생할 수 있었습니다.

파이썬 3에서는 range 함수가 이터레이터(iterator)로 변경되었습니다. 이로 인해 큰 범위의 값을 생성해도 메모리 문제가 발생하지 않게 되었습니다.

3. input 함수

파이썬 2에서의 input 함수는 사용자로부터 입력을 받을 때 자동으로 평가(evaluated)되었습니다. 예를 들어, 사용자가 “5”를 입력하면 정수 5로 평가되었습니다.

파이썬 3에서는 input 함수는 사용자로부터 입력을 받을 때 문자열로 처리합니다. 따라서 사용자 입력을 다룰 때 타입 변환을 수동으로 해주어야 합니다.

num = input("Please enter a number: ")
num = int(num)  # 입력된 값을 정수로 변환

4. urllib 모듈

urllib 모듈은 웹 요청과 관련된 기능을 제공합니다. 파이썬 2에서는 urllib2 모듈과 urlib 모듈로 구분되었습니다.

파이썬 3에서는 urllib2urlib가 통합되어 urllib 모듈로 변경되었습니다.

import urllib.request  # 파이썬 3

response = urllib.request.urlopen("https://www.example.com")
html = response.read()

5. Unicode 처리

파이썬 2의 문자열(String)은 기본적으로 바이트(Byte) 시퀀스로 처리됩니다. 따라서 유니코드 문자열을 다루기 위해서는 u 접두사를 붙여야 하였습니다.

파이썬 3에서는 문자열이 기본적으로 유니코드(Unicode)로 처리됩니다. u 접두사를 사용할 필요가 없으며, 모든 문자열이 유니코드로 처리됩니다.

결론

파이썬 2와 파이썬 3 간의 표준 라이브러리 모듈 차이에는 기타 다른 차이점도 존재합니다. 위에서 언급한 사항들은 대표적인 차이점에 해당합니다. 따라서 파이썬 2에서 파이썬 3으로 마이그레이션을 고려한다면, 표준 라이브러리 모듈들을 조금 더 주의깊게 살펴보는 것이 필요합니다.