요즈음 가장 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 한글 사이트나 구글 검색을 통해 받을 수 있으니 공부하면 좋을 것 같다.