Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

예제 코드로 살펴보는 Python 2.x와 Python 3.x의 핵심 차이점

이 글에서는 Python 2.x와 Python 3.x 사이의 주요 변경 사항을 예제 코드와 함께 살펴보겠습니다.

  • 입력 방식(Input)
  • 출력 방식(Output)
  • 나눗셈 연산자(Division Operator)
  • 예외 처리(Exception Handling)

1. 입력 방식

Python 2.x에서 사용하던 raw_input() 함수는 최신 버전에서 input() 함수로 대체되었습니다. 아래 예제는 두 버전에서 정수를 입력받는 방법을 보여줍니다.

# Python 2.x
a = int(raw_input())

# Python 3.x
a = int(input())

두 문법 모두 사용자로부터 문자열을 입력받은 뒤 int()로 형 변환하여 정수 값을 저장한다는 점은 동일합니다. 다만 Python 3.x부터는 별도의 raw_input() 없이 input() 하나로 통일되었습니다.

2. 출력 방식

Python 2.x의 print는 문(statement) 형태로 기능이 제한적이었지만, Python 3.x에서는 함수 형태로 바뀌면서 sep(구분자)와 end(종료 문자) 옵션이 추가되어 출력 형식을 훨씬 유연하게 제어할 수 있게 되었습니다.

# Python 2.x
print "tutorialspoint"

# Python 3.x
print("tutorialspoint", sep="", end="\n")

위 두 구문은 동일한 결과를 출력합니다. 만약 줄바꿈 없이 한 줄로 이어서 출력하고 싶다면, Python 2.x에서는 print 문 끝에 쉼표(,)를 붙이고, Python 3.x에서는 end=" " 옵션을 사용하면 됩니다.

3. 나눗셈 연산자

Python 2.x에서 나눗셈 연산자(/)를 사용하면 두 정수의 나눗셈 결과가 소수점 이하를 버린 정수로 반환되었습니다. Python 3.x에서는 이 동작이 개선되어, 나눗셈 결과가 실수(부동소수점) 영역으로 반환됩니다.

# Python 2.x
a = 7 / 4   # 결과: 1

# Python 3.x
a = 7 / 4   # 결과: 1.75

참고로 Python 3.x에서도 정수 나눗셈(몫만 구하기)이 필요하다면 // 연산자(플로어 디비전)를 사용할 수 있습니다. 예를 들어 7 // 41을 반환합니다.

4. 예외 처리

Python 2.x에서는 예외 객체를 받을 변수를 쉼표(,)로 구분하여 지정했지만, Python 3.x에서는 as 키워드를 사용하는 새로운 문법으로 변경되었습니다.

# Python 2.x
try:
    pass
except NameError, err:
    print err, 'Error Caused'

# Python 3.x
try:
    pass
except NameError as err:
    print(err, 'Error Caused')

쉼표 방식은 여러 예외 타입을 지정할 때 모호함을 유발할 수 있어 폐기되었으며, as 키워드 방식이 공식 표준으로 자리 잡았습니다.

결론

이번 글에서는 Python 2.x와 Python 3.x의 대표적인 차이점인 입력 방식, 출력 방식, 나눗셈 연산자, 예외 처리 문법을 예제와 함께 확인했습니다. Python 2는 이미 2020년 1월에 공식 지원이 종료되었으므로, 새 프로젝트에는 반드시 Python 3.x를 사용하는 것이 좋습니다.