반응형

안녕하세요 봉자씨입니다.

이 전에 파이썬을 왜 공부해야하고 파이썬으로 무엇을 해야 하는지에 대해서 알아 보았습니다.

그럼 이제 파이썬을 진짜로 공부해 보도록 하겠습니다.

 

파이썬은 인터프린터 언어라는 말이 있던데 무슨 말이죠?

파이썬이 인터프린터 언어다라는 말을 듣게 되고 이게 무슨 말인가 싶습니다.

프로그래밍 언어는 꼭 그렇진 않지만 두가지 부류로 나뉜다고 생각하시면 됩니다.

 

(아래의 내용은 초보용 해석이니 참고)

한방에 프로그램한 소스 코드를 읽어서 기계어로 변환하여 이를 실행하는 컴파일 언어와

프로그램한 소스 코드를 한줄 한줄 실시간으로 읽어서 실행하는 인터 프린터 언어가 있습니다.

 

이 중에 파이썬 언어는 인터프린터 언어에 해당합니다. 

원시 코드 (프로그래머가 작성한 소스코드) 기계어로 변환하는 과정 없습니다.

한줄 한줄 해석하여 바로 명령어를 실행 R, Python, Ruby와 같은 언어들이 대표적입니다.

Runtime 상황에서는 한 줄씩 실시간으로 읽어서 실행하기 때문에 컴파일 언어에 비해 속도가 느립니다.
실행속도는 느리지만 코드 변경시 빌드 과정없이 바로 실행이 가능하다는 장점이 있습니다.

 

파이썬 하다 보면 이런 이야기가 나옵니다. 

Cpython? pypy? 대체 무슨 말이죠?

현재의 파이썬에서는 표준 파이썬 구현체인 CPython의 인터프리터를 사용하고 안정적으로 지원하고 있습니다.

PyPy의 경우 JIT 컴파일 및 메모리 사용량 감소와 같은 것이 코드의 속도를 크게 향상 시켰습니다.

근데 지금 Cpython 사용해요? why 안써? PyPy?

 - 파이썬 3 호환성 부족

 - 확장 지원 부족

 - 접착제 코드로 적합하지 않음

 - 속도가 전부는 아니다

 

음 파이썬 3???

이 전 글을 처음부터 보신 분은 이해하시 겠지만 처음 이 글을 보신 분은

대체 파이썬이면 파이썬이지 파이썬3가 무엇인지에 대해서 이해가 안가시는 분이 대다수라고 생각이 듭니다.

 

간단히 파이썬을 이야기하면 버전에 따라서 파이썬2와 파이썬3로 나눌 수 있습니다.

이를 한마디로 다시 정리하면

Python2는 과거이고, Python3는 미래이다.

귀도 반 로섬과 관계자는 고치기 힘든 것들을 함께 개선 하기로 결정. 이를 Python3라고 부르기로 하였습니다.

현재 파이썬 2.7의 버전은 2.7.17입니다. 20201월에 2.7.18 버전의 코드 프리징(더이상 지원 안함)이 진행되고,

4월에는 2.x의 최종 버전인 2.7.18이 출시됩니다. 이후로는 더이상 업데이트가 이뤄지지 않습니다.

또한 중요한 것은 파이썬2와 파이썬3는 호환이 되지 않으니 꼭 알고 계세요.

 

그럼 파이썬2와 파이썬3의 차이가 무엇인가요?

Python 2.7

Python 3.4

비교

>>> 3 / 2
1

>>> 3 / 2
1.5

나누기에 파이썬3는 소수점으로 표현
파이썬2는 정수로 표현

Print “Hello” #statement

Print(“hello) #function

print("hello")
출력 할때에 괄호가 있음 파이썬 3

print( type('hello’) ) # <type 'str’>

print( type(u'hello') ) # <type 'unicode'>

print( type('hello') ) # <class 'str’>

print( type(u'hello') ) # <class 'str'>

  • 파이썬 3 의 문자타입
    - bytes : raw 8 bit
    - str : unicode 문자
  • 파이썬 2의 문자타입
    - str : raw 8 bit
    -unicode : unicode 문자

print( 2**30 ) # 1073741824

print( type(2**30) ) # <type 'int'>

print( 2**100 )

 # 1267650600228229401496703205376

print( type(2**100) ) # <type 'long'>

print( 2**30 ) # 1073741824

print( type(2**30) ) # <class 'int'>

print( 2**100 )

# 1267650600228229401496703205376 

print( type(2**100) ) # <class 'int'>

파이썬2에서 존재하던 long은 사라지고 이제 파이썬3엔 int 뿐입니다.

 

그럼 왜 파이썬2와 파이썬3의 차이를 알아야 하나요?

우리는 이제 최신 버전의 파이썬3로 학습을 할 것입니다.

그런데 굳이 파이썬2에 대한 차이점을 알아야 하는 이유가 무엇일가요?

이유는 딱 한가지 입니다.

우리가 인터넷 상에서 파이썬 소스 코드도 찾아보고 참고도 하는 경우가 많을 것이고

그렇게 해야 파이썬의 실력이 무럭무럭 자라납니다. 

그런데 이 과정에서 내가 보는 코드가 파이썬2 인데도 불구하고

파이썬3 환경에서 실행을 하고 안돌아 가고 문제가 되는 경우가 발생 할 수 있습니다.

 

이런 경우를 위해서 우리는 굳이 파이썬2와 파이썬3의 차이점을 알아야 하고

이를 통해서 파이썬2 소스와 파이썬3의 소스를 구별 할 수 있어야 합니다.

 

반응형