Python ➤ 파이썬
(+)분류 : 가져온 문서/오메가
Python
1991년 Guido van Rossum이 발표한 인터프리터 언어이다. 파이썬 소프트웨어 재단(Python Software Foundation)에서 관리하고 있다.
1. 특징 ✎ ⊖
- 동적 타이핑 : 런타임 시에 타입 체크를 하는 동적 타이핑을 할 수 있으며, 자동으로 메모리 관리를 해준다.
- 쓰레기 수집(garbage collection) : 참조 횟수가 0이 되면 수행되며, 메모리 누수 등을 방지한다.
- 멀티 패러다임
- 모듈, 클래스, 객체 등의 언어 요소를 내부에서 접근할 수 있고, 리플렉션을 이용한 기술이 가능하다.
2. 확장 ✎ ⊖
- CPython: C로 작성된 파이썬을 지칭하며, 일반적으로 '파이썬'이라고 말할 때는 주로 이것을 의미한다.
- Stackless Python: C스택을 사용하지 않고 독자적인 스택을 쓴다.
- Jython: 자바로 구현되는 파이썬이며, 자바 가상 머신(JVM) 위에서 실행된다 .
- IronPython: .NET Framework와 Mono에서 작동하는 파이썬이다. C#으로 구현되어 있으며, .NET Framework 라이브러리를 사용할 수 있다.
- PyPy: 파이썬으로 구현되는 파이썬이다. 실행 속도와 효율성 및 CPython과의 호환성에 중점을 두고 있다.
3. Python2와 Python3의 차이 ✎ ⊖
- print가 함수 형태로 변경되었다. 2에서는 아래와 같다.
print "Hello", "world"
Hello world
3에서는 아래와 같다.
print("Hello", "world")
Hello world
- 3에서는 인자로 구분자(sep), 끝라인(end), 출력(file)을 지정할 수 있다.
- raw_input이 input으로 변경되고, 예약어가 추가되었다(as, with) 새로운 문자열 포맷팅도 제공한다.
- long 형이 없어지고 int 형으로 통일되었다. 2에서는 sys.maxint 이하의 값은 int로 처리되고 그 이상은 long으로 처리되었으나, 3에서는 모두 int로 처리된다.
- 2에서는 int/int의 결과가 int로만 나왔으나, 3에서 int/int 의 결과는 float로 처리된다. 예를 들어, 2.x에서 1/2은 0으로 처리되었다.
- 스트링, 유니코드 체계가 바뀌었다. 2.x에서는 string과 unicode로 구분되었지만 3에서는 string과 bytes로 구분된다. 2.x에서는 일반 문자열이 인코딩이 있는 문자열이었고 유니코드가 구별되었는데, 3에서는 유니코드를 따로 지정하지 않고 인코딩이 있는 문자열은 bytes로 표현된다.
4. 구문 ✎ ⊖
4.1. 줄 구조와 들여쓰기 ✎ ⊖
들여쓰기는 다양한 코드 블록을 나타낸다. 블록 전체적으로 일관성이 있게 들여쓰기를 해야 하며, 이것이 지켜지지 않을 경우 에러가 발생한다. 탭을 사용하여 들여쓰기를 할 수 있으나 가급적 스페이스를 사용하는 것이 권장된다.
긴 문장은 역슬래쉬(를 입력한다)를 이용하여 여러 줄로 작성할 수 있다.
소괄호, 중괄호, 대괄호, 삼중따옴표 안의 부분은 줄이음 문자 없이도 여러 줄에 걸쳐 있을 수 있다.
함수, 조건문, 루프, 클래스의 몸체가 오직 한 문장만 담는다면 다음과 같이 같은 줄에 쓸 수 있다.
빈 몸체나 블록은 pass문으로 나타낸다.
세미콜론(;)을 이용하면 한 줄에 둘 이상의 문장을 구분하여 작성할 수 있다. #는 줄의 끝까지 이어지는 주석을 표시한다. 따옴표 내의 #는 주석으로 취급되지 않는다.
인터프리터는 대화식 모드에서 수행될 때를 제외하고는 빈 줄을 모두 무시한다. 대화식 모드에서는 여러 줄에 걸친 문장을 입력할 때 빈 줄이 입력의 끝을 알리는 역할을 한다.
긴 문장은 역슬래쉬(를 입력한다)를 이용하여 여러 줄로 작성할 수 있다.
소괄호, 중괄호, 대괄호, 삼중따옴표 안의 부분은 줄이음 문자 없이도 여러 줄에 걸쳐 있을 수 있다.
함수, 조건문, 루프, 클래스의 몸체가 오직 한 문장만 담는다면 다음과 같이 같은 줄에 쓸 수 있다.
if a: statement1
else: statement2
빈 몸체나 블록은 pass문으로 나타낸다.
if a = 2:
pass # 아무 일도 하지 않음
세미콜론(;)을 이용하면 한 줄에 둘 이상의 문장을 구분하여 작성할 수 있다. #는 줄의 끝까지 이어지는 주석을 표시한다. 따옴표 내의 #는 주석으로 취급되지 않는다.
인터프리터는 대화식 모드에서 수행될 때를 제외하고는 빈 줄을 모두 무시한다. 대화식 모드에서는 여러 줄에 걸친 문장을 입력할 때 빈 줄이 입력의 끝을 알리는 역할을 한다.
4.2. 식별자와 예약어 ✎ ⊖
식별자의 이름은 문자, 숫자, 밑줄(_)을 포함할 수 있다. 다만 숫자가 아닌 문자로 시작되어야 한다. 문자로는 A-Z와 a-z만 사용 가능하다. 대소문자를 구분하며, 특수기호(1)와 예약어는 식별자로 쓸 수 없다. 이름이 밑줄로 시작하거나 끝나는 식별자는 특수한 의미를 가지는 경우가 많으므로 사용에 유의해야 한다.
아래는 예약어들을 나열한 것이다.
아래는 예약어들을 나열한 것이다.
- and
- del
- from
- nonlocal
- try
- as
- elif
- global
- not
- while
- break
- except
- import
- pass
- yield
- class
- exec
- in
- continue
- finally
- is
- raise
- def
- for
- lambda
- return
4.3. 숫자 상수 ✎ ⊖
내장 숫자 상수에는 불리언, 정수, 부동 소수점 수, 복소수의 네 종류가 있다. 3 기준으로 int, float, complex의 수치형이 있다.
5. 사용 ✎ ⊖
파이썬을 사용하는 기업체들로는 구글, 야후, CERN, NASA, ILM, ITA, 유튜브 등이 대표적이다. 웹 프로그래밍, GUI 기반 응용 프로그램, CAD, 3D 모델링, 수학 등 활용도가 매우 높다. 시스템 관리용 스크립트로 이용하는 OS도 여럿 있다. 많은 상용 응용 프로그램에서 Python은 내장 스크립트 언어로 채용되고 있다.
NumPy, SciPy, Matplotlib와 같은 라이브러리들은 과학 컴퓨팅에 파이썬을 활용하는 데 매우 효과적이다. 한 분야에 특화된 라이브러리인 BioPython과 Astropy 같은 것들도 있다. 파이썬으로 프로그래밍 가능한 수학 소프트웨어인 Sage도 있다. 일본의 고에너지 가속기 연구기구(高エネルギー加速器研究機構)에서도 Python을 사용한다.
파이썬을 스크립팅 언어로서 임베딩해 사용하는 소프트웨어 제품들도 있다. 대표적으로 3D 애니메이션 소프트웨어인 3ds Max, Blender, Cinema 4D, Lightwave, Maya, MotionBuilder가 있다. 2D 이미징 프로그램들 중에는 GIMP, Inkscape, Scribus, Paint Shop Pro 등이 있다. 음악의 기보에 사용되는 프로그램들도 파이썬을 사용한다.
게임에서도 쓰인다. 문명 4에서는 스크립트 언어로 쓰였으며, 킹덤 언더 파이어의 엔진에도 쓰였다. 월드 오브 탱크의 상당 부분도 파이썬으로 구현되었다. EVE 온라인은 Stackless Python으로 작성되었다.
파이썬은 인공지능 연구에도 이용된다.(4)(5)(6)(7)
리눅스의 대부분 제품들은 파이썬으로 쓰여져 있다. 예시로 우분투, Ubiquity, Ted Hat Linux, Fedora, Gentoo Linux 등이 있다.
NumPy, SciPy, Matplotlib와 같은 라이브러리들은 과학 컴퓨팅에 파이썬을 활용하는 데 매우 효과적이다. 한 분야에 특화된 라이브러리인 BioPython과 Astropy 같은 것들도 있다. 파이썬으로 프로그래밍 가능한 수학 소프트웨어인 Sage도 있다. 일본의 고에너지 가속기 연구기구(高エネルギー加速器研究機構)에서도 Python을 사용한다.
파이썬을 스크립팅 언어로서 임베딩해 사용하는 소프트웨어 제품들도 있다. 대표적으로 3D 애니메이션 소프트웨어인 3ds Max, Blender, Cinema 4D, Lightwave, Maya, MotionBuilder가 있다. 2D 이미징 프로그램들 중에는 GIMP, Inkscape, Scribus, Paint Shop Pro 등이 있다. 음악의 기보에 사용되는 프로그램들도 파이썬을 사용한다.
게임에서도 쓰인다. 문명 4에서는 스크립트 언어로 쓰였으며, 킹덤 언더 파이어의 엔진에도 쓰였다. 월드 오브 탱크의 상당 부분도 파이썬으로 구현되었다. EVE 온라인은 Stackless Python으로 작성되었다.
파이썬은 인공지능 연구에도 이용된다.(4)(5)(6)(7)
리눅스의 대부분 제품들은 파이썬으로 쓰여져 있다. 예시로 우분투, Ubiquity, Ted Hat Linux, Fedora, Gentoo Linux 등이 있다.
6. 영상 ✎ ⊖
이 문서의 내용 중 전체 또는 일부는 오메가에서 가져왔으며 CC BY-NC-SA 3.0에 따라 이용할 수 있습니다.
(1) @, $, %
(2)예시로 0o10, 0x255, 0b1011
(3)10진수를 입력받아서 원하는 진법의 수로 변환하는 함수도 있다. oct()는 8진수, hex()는 16진수, bin()는 2진수로 변환한다.
(4)"Python for Artificial Intelligence". Wiki.python.org. 19 July 2012. Retrieved 3 December 2012.
(5)Paine, Jocelyn, ed. (August 2005). "AI in Python". AI Expert Newsletter (Amzi!). Retrieved 11 February 2012.
(6)"PyAIML 0.8.5 : Python Package Index". Pypi.python.org. Retrieved 17 July 2013.
(7)Russell, Stuart J. & Norvig, Peter (2009). Artificial Intelligence: A Modern Approach (3rd ed.). Upper Saddle River, NJ: Prentice Hall. p. 1062. ISBN 978-0-13-604259-4. Retrieved 11 February 2012.
(2)
(3)
(4)
(5)
(6)
(7)