[language] python
- 개발공부/개발정보
- 2020. 5. 25.
파이썬은 초보자부터 전문가까지 사용자층을 보유하고 있다. 동적 타이핑(dynamic typing) 범용 프로그래밍 언어로, 펄 및 루비와 자주 비교된다. 다양한 플랫폼에서 쓸 수 있고, 라이브러리(모듈)가 풍부하여, 대학을 비롯한 여러 교육 기관, 연구 기관 및 산업계에서 이용이 증가하고 있다. 또 파이썬은 순수한 프로그램 언어로서의 기능 외에도 다른 언어로 쓰인 모듈들을 연결하는 풀언어(glue language)로써 자주 이용된다. 실제 파이썬은 많은 상용 응용 프로그램에서 스크립트 언어로 채용되고 있다. 도움말 문서도 정리가 잘 되어 있으며, 유니코드 문자열을 지원해서 다양한 언어의 문자 처리에도 능하다.
- 주요 특징
-동적 타이핑(dynamic typing). (실행 시간에 자료형을 검사한다.)
-객체의 멤버에 무제한으로 접근할 수 있다. (속성이나 전용의 메서드 훅을 만들어 제한할 수는 있음.)
-모듈, 클래스, 객체와 같은 언어의 요소가 내부에서 접근할 수 있고, 리플렉션을 이용한 기술을 쓸 수 있다.
- 해석 프로그램의 종류
-Cython: C로 작성된 인터프리터.
-스택리스 파이썬: C 스택을 사용하지 않는 인터프리터.
-자이썬: 자바 가상 머신 용 인터프리터. 과거에는 제이파이썬(JPython)이라고 불렸다.
-IronPython: .NET 플랫폼 용 인터프리터.
-PyPy: 파이썬으로 작성된 파이썬 인터프리터.
현대의 파이썬은 여전히 인터프리터 언어처럼 동작하나 사용자가 모르는 사이에 스스로 파이썬 소스 코드를 컴파일하여 바이트 코드(Byte code)를 만들어 냄으로써 다음에 수행할 때에는 빠른 속도를 보여 준다.
파이썬에서는 들여쓰기를 사용해서 블록을 구분하는 독특한 문법을 채용하고 있다. 이 문법은 파이썬에 익숙한 사용자나 기존 프로그래밍 언어에서 들여쓰기의 중요성을 높이 평가하는 사용자에게는 잘 받아들여지고 있지만, 다른 언어의 사용자에게서는 프로그래머의 코딩 스타일을 제한한다는 비판도 많다. 이 밖에도 실행 시간에서뿐 아니라 네이티브 이진 파일을 만들어 주는 C/C++ 등의 언어에 비해 수행 속도가 느리다는 단점이 있다. 그러나 사업 분야 등 일반적인 컴퓨터 응용 환경에서는 속도가 그리 중요하지 않고, 빠른 속도를 요하는 프로그램의 경우에도 프로토타이핑한 뒤 빠른 속도가 필요한 부분만 골라서 C 언어 등으로 모듈화할 수 있다(ctypes, SWIG, SIP 등의 래퍼 생성 프로그램들이 많이 있다). 또한 Pyrex, Psyco, NumPy 등을 이용하면 수치를 빠르게 연산할 수 있기 때문에 과학, 공학 분야에서도 많이 이용되고 있다. 점차적인 중요성의 강조로 대한민국에서도 점차 그 활용도가 커지고 있다.
파이썬의 문법에서 가장 잘 알려진 특징은 들여쓰기를 이용한 블록 구조를 들 수 있다.
이것은 보통 C 등에서 쓰이는 괄호를 이용한 블록 구조를 대신한 것으로
줄마다 처음 오는 공백으로 눈에 보이는 블록 구조가 논리적인 제어 구조와 일치하게 하는 방식이다.
아래는 C와 파이썬으로 재귀 호출을 사용한 차례곱을 계산하는 함수를 정의한 것이다.
파이썬
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)
C
int factorial(int x) {
if(x == 0) {
return 1;
} else {
return x * factorial(x - 1);
}
}
이렇게 비교해 보면
파이썬과 "정리되어 들여쓰기가 된" C 언어와는 차이가 거의 없어 보인다.
그러나 여기서 중요한 것은 위쪽의 C 형식은 가능한 여러 스타일 가운데 하나일 뿐이라는 사실이다.
즉, C로는 똑같은 구문을 다음과 같이 쓸 수도 있다.
읽기 어렵게 쓰인 C
int factorial(int x) {
if(x == 0) {return 1;} else
{return x * factorial(x - 1); } }
파이썬으로는 이렇게 쓰는 것을 허용하지 않는다. 파이썬에서 들여쓰기는 한 가지 스타일이 아니라 필수적인 문법에 속한다. 파이썬의 이러한 엄격한 스타일 제한은 쓰는 사람에 관계 없이 통일성을 유지하게 하며, 그 결과 가독성이 향상될 수 있는 장점이 있지만, 다른 한편으로는 프로그램을 쓰는 스타일을 선택할 자유를 제약하는 것이란 의견도 있다.
C와 다르지만 아래와 같이 줄바꿈을 하지 않고 사용할 수도 있다.
def factorial(x):
return 1 if x==0 else x * factorial(x - 1)
'개발공부 > 개발정보' 카테고리의 다른 글
window10 등록된 라이센스 찾는 방법 2가지 (0) | 2020.06.24 |
---|---|
도커 (docker) (0) | 2020.05.26 |
쿠버네티스 (kubernetes) (0) | 2020.05.26 |
react (javascript library) (0) | 2020.05.25 |
chrome 단축키 (0) | 2020.05.19 |