[파이썬] 파이썬 2와 파이썬 3의 내장 라이브러리 비교

파이썬은 많은 개발자들에게 사랑받는 프로그래밍 언어입니다. 그러나 파이썬 2와 파이썬 3 사이에는 몇 가지 중요한 차이점이 있습니다. 이 중 하나는 내장 라이브러리의 변경입니다. 파이썬 3에서는 몇 가지 내장 라이브러리가 새롭게 추가되었거나 업데이트되었기 때문에 어떤 라이브러리를 사용해야 하는지 알아봐야 합니다. 이 글에서는 파이썬 2와 파이썬 3의 내장 라이브러리를 비교해보겠습니다.

1. 문자열 처리

파이썬 3에서는 문자열 처리를 위해 unicode를 기본으로 사용합니다. 이는 다양한 언어와 문자 집합을 처리하는 데 유리한 점입니다. 그러나 파이썬 2는 strunicode 데이터 타입을 별도로 사용하므로 문자열 처리에 주의가 필요합니다.

파이썬 2:

# 문자열을 UTF-8로 인코딩
str = '안녕하세요'.decode('utf-8')

파이썬 3:

# 문자열을 UTF-8로 인코딩
str = '안녕하세요'

2. 소켓 통신

파이썬 3에서는 소켓 통신을 위해 bytes를 사용합니다. bytes는 이진 데이터를 처리하는 데 사용되며, 네트워크 통신에 유용합니다. 파이썬 2에서는 strunicode 데이터 타입을 사용하므로 소켓 통신에서 주의가 필요합니다.

파이썬 2:

import socket

# 소켓 생성
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 데이터 전송
data = 'Hello, World!'
s.send(data)

파이썬 3:

import socket

# 소켓 생성
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 데이터 전송
data = b'Hello, World!'
s.send(data)

3. print 함수

파이썬 2에서는 print문이 문장 그대로 출력되었습니다. 그러나 파이썬 3에서는 print 함수로 변경되었으며, 괄호 안에 문자열을 넣어야 합니다.

파이썬 2:

print "Hello, World!"

파이썬 3:

print("Hello, World!")

4. 이터레이터와 제너레이터

파이썬 2에서는 이터레이터와 제너레이터를 사용할 때 next() 함수를 호출합니다. 그러나 파이썬 3에서는 __next__() 메서드를 사용하여 요소를 가져옵니다.

파이썬 2:

# 이터레이터 생성
my_list = iter([1, 2, 3, 4, 5])

# 요소 가져오기
print next(my_list)

파이썬 3:

# 이터레이터 생성
my_list = iter([1, 2, 3, 4, 5])

# 요소 가져오기
print(my_list.__next__())

파이썬 3에서는 또한 제너레이터 함수에서 yield from 구문을 지원합니다. 이를 사용하면 더욱 간단하고 명확한 코드를 작성할 수 있습니다.

파이썬 3:

def generator():
    yield from [1, 2, 3, 4, 5]

파이썬 2에서는 yield 문을 사용하여 제너레이터를 작성해야 합니다.

파이썬 2:

def generator():
    for i in [1, 2, 3, 4, 5]:
        yield i

파이썬 3에는 추가로 여러 라이브러리 업데이트가 있지만, 위에서 언급한 내용은 가장 주요하고 자주 사용되는 내장 라이브러리들의 변화입니다. 파이썬 개발을 진행하실 때에는 문법 차이에 주의하고, 파이썬 3에서 제공하는 새로운 기능과 개선된 내장 라이브러리를 활용해보시기 바랍니다.