요즈음 가장 Hot한 프로그래밍 언어가 파이썬일 것이다.

아니, 이미 Hot하다는 표현은 진부하고, 장악력을 넓혀가고 있다는 것이 맞을 것 같다.


파이썬에 대해서 간단히 알아보고 넘어가보자.


파이썬이란?

국내는 Java가 그 점유율이 엄청나지만 Oracle의 JDK 유지보수 유료화 정책 등

점유율이 더이상 올라가지는 않을 것으로 보이며,

틈새 시장을 파이썬이 차지하고 있다.


파이썬을 처음 접할 떄 자주 보게 되는 문구는

"Life is too short, You need Python."

이라는 문구다.

그만큼 간결, 간편하게 빠르게 개발할 수 있는 언어라는 의미다.


파이썬은 1991년 귀도 반 로썸(Guido van Rossum)이 개발한 고급 프로그래밍 언어로

프로그래머가 바로 사용할 수 있는 라이브러리들과 통합 개발환경인 "Battery Included" 로 개발되었다.

초기에는 매킨토시용으로 개발됐다고 한다.


파이썬의 특징


파이썬은 다음과 같은 특징이 있다.

  • 인터프리터 기반의 객체 지향 프로그래밍 언어
  • 유연한 확장 (Extendible)
  • 동적 타이핑 (Dynamic Typing)
  • 리플렉션 (Reflection)


인터프리터 기반의 객체 지향 프로그래밍 언어

파이썬은 바이트 코드(byte code)의 컴파일을 지원하는 동적 인터프리터 언어로,

인터프리터이기 떄문에 한 줄, 한 줄 실행이 되며,

대화모드(interpreter mode)로 코드의 결과를 확인하면서 개발할 수 있는 장점이 있다.


유연한 확장

외부의 프로그래밍 라이브러리로 확장할 수 있으며

컴파일된 확장 모듈을 파이썬 내부로 동적 로딩을 할 수 있다.

그리고 C언어 등 다양한 언어를 이용해 모듈화 할 수 있다.


동적 타이핑

파이썬은 프로그램을 실행할 때 타입 검사를 수행한다.

즉, 자료형이 코드가 실행될 때 정확히 그 타입이 정해지므로

유영함을 가지고 있지만 반대로 오류를 발생할 수도 있는 약점을 함께 가지고 있다.


리플렉션

런타임에서 프로그램의 구조를 파악하고 동적 객체 생성 및 함수 호출 등을 수행할 수 있는 기능으로

어떤 클래스가 어디서 파생되었는지, 객체에 어떤 속성이 있는지의 정보를 런타임에서 얻거나 조작할 수 있다.

좀 더 쉽게 얘기하면 클래스, 함수, 속성 그 자체에 직접 접근이 가능하다는 소리다.


리플렉션 예시

리플렉션이 잘 이해가 되지 않을 수 있으니 간단한 예시를 들어보겠다.

class TestClass:
    name = 'the value of name'
    def test_function(self, arg):
        print('***print word {}'.format(arg))

# 클래스 및 클래스 변수, 클래스 함수 직접 접근
test_class = globals()['TestClass']
print(test_class)
print(test_class.name)
print(test_class.test_function)
TestClass.test_function(TestClass, 'test function')

# 객체 생성
test_instance = test_class()
print(test_instance)

# 함수 접근 및 호출, 동적 타이핑
method = getattr(test_instance, 'test_function')
print(method)
method("reflection")

이에 대한 결과는 아래와 같다.

<class '__main__.TestClass'>
the value of name
<function TestClass.test_function at 0x0000016B0BE6A950>
***print word test function
<__main__.TestClass object at 0x0000016B0BE682E8>
<bound method TestClass.test_function of <__main__.TestClass object at 0x0000016B0BE682E8>>
***print word reflection

Process finished with exit code 0

결과를 보면 클래스와 객체에 대한 결과가 달리 출력되는 것을 알 수 있다.

클래스에 직접 접근하여 객체가 아닌 클래스의 변수와 함수에 접근하는 것을 보면

기존의 Java에서는 잘 이해가 되지 않을 수 있다.

(물론 static 은 제외)


파이썬 무료 강의

파이썬을 공부하는 사람들에게 무료 강의로 유명한

"A Byte of Python" 이라는 곳이 있다.

영문 : https://python.swaroopch.com/

한글 : http://byteofpython-korean.sourceforge.net/byte_of_python.html

한글판 pdf도 byteofpyton 한글 사이트나 구글 검색을 통해 받을 수 있으니 공부하면 좋을 것 같다.



+ Recent posts