맨위로가기 타임라인 바로가기

파이썬

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
타임라인 바로가기

1. 개요

파이썬은 1980년대 말 귀도 반 로섬이 개발한 객체 지향적 프로그래밍 언어이다. 몬티 파이튼의 날아다니는 서커스에서 이름을 따왔으며, ABC, Modula-3 등 여러 언어의 영향을 받았다. 파이썬은 2.0, 3.0 버전을 거치며 쓰레기 수집, 유니코드 지원 등 다양한 기능이 추가되었고, 2.x와 3.x 버전 간의 호환성 문제로 인해 3.x 버전으로의 전환이 이루어졌다. 파이썬은 간결한 문법과 확장성, 다양한 라이브러리를 제공하며, 웹 개발, 과학 계산, 인공지능 등 다양한 분야에서 활용된다. 파이썬은 들여쓰기를 통한 블록 구조, 동적 타이핑, 강력한 타입 시스템을 특징으로 하며, NumPy, SciPy, TensorFlow 등의 라이브러리를 통해 다양한 기능을 수행한다. 파이썬은 또한, PyPI를 통해 다양한 패키지를 제공하며, PyCharm, Visual Studio Code 등 여러 통합 개발 환경(IDE)에서 지원된다.

더 읽어볼만한 페이지

  • 1991년 개발된 프로그래밍 언어 - 비주얼 베이직
    비주얼 베이직은 1991년 마이크로소프트에서 출시된 GUI 기반 응용 프로그램 개발에 강점을 가진 프로그래밍 언어이며, 윈도우용 응용 프로그램 및 데이터베이스 조작 프로그램 개발에 주로 사용되었고, 2005년 표준 지원이 중단되었다.
  • 1991년 개발된 프로그래밍 언어 - 오즈 (프로그래밍 언어)
    오즈는 게르트 스몰카가 설계한 다중 패러다임 프로그래밍 언어로서, 논리형, 함수형, 명령형, 객체 지향, 제약, 분산, 동시 프로그래밍을 지원하며 간단한 형식 의미론과 효율적인 구현을 목표로 한다.
  • 파이썬 - 귀도 반 로섬
    귀도 반 로섬은 네덜란드 출신의 프로그래머로, 1989년 크리스마스 기간에 취미로 파이썬 프로그래밍 언어를 개발했으며, 구글과 드롭박스 등에서 일하다 2020년 마이크로소프트에 수석 엔지니어로 합류했다.
  • 파이썬 - 모조 (프로그래밍 언어)
    모조는 모듈러사에서 개발한 파이썬과 유사한 구문의 고성능 프로그래밍 언어로, AI 애플리케이션 개발에 초점을 맞추고 러스트의 영향을 받은 메모리 안전성을 제공하며 향후 오픈 소스로 전환될 예정이다.
  • 병행 프로그래밍 언어 - 자바 (프로그래밍 언어)
    자바는 제임스 고슬링 등에 의해 개발된 객체 지향 프로그래밍 언어로, 다양한 플랫폼에서 실행 가능하며 샌드박스 모델 기반의 보안 기능, 자동 메모리 관리, 멀티스레딩 등을 지원한다.
  • 병행 프로그래밍 언어 - 스칼라 (프로그래밍 언어)
    스칼라는 마틴 오더스키가 설계한 객체 지향 및 함수형 프로그래밍 언어이며, 자바 플랫폼에서 실행되고 자바 코드와 상호 운용이 가능하며, 아파치 스파크 등 다양한 곳에서 활용된다.
파이썬 - [IT 관련 정보]에 관한 문서
개요
파이썬 로고
파이썬 로고
설명범용 프로그래밍 언어
설계자귀도 반 로섬
개발자파이썬 소프트웨어 재단
발표일1991년 2월 20일
최신 안정화 버전3.12.3
최신 안정화 버전 배포일2024년 5월 2일
최신 프리뷰 버전3.13.0a3
최신 프리뷰 버전 배포일2024년 4월 26일
타이핑덕 타이핑
동적 타이핑
강한 타이핑
선택적 타이핑 (3.5부터, 비공식 도구 제외하고 힌트 무시됨)
구현체CPython
PyPy
Stackless Python
MicroPython
CircuitPython
IronPython
Jython
운영체제티어 1: 64비트 리눅스, macOS; 64비트 및 32비트 윈도우 10+
티어 2: 예: 32비트 WebAssembly (WASI)
티어 3: 64비트 안드로이드, iOS, FreeBSD, (32비트) Raspberry Pi OS
비공식 (또는 작동하는 것으로 알려짐): 기타 유닉스 계열/BSD 변형 및 몇몇 다른 플랫폼
라이선스파이썬 소프트웨어 재단 라이선스
파일 확장자.py, .pyw, .pyz, .pyi, .pyc, .pyd
방언Cython
RPython
Starlark
영향을 받은 언어ABC
Ada
ALGOL 68
APL
C
C++
CLU
Dylan
Haskell
Icon
Lisp
Modula-3
Perl
Standard ML
영향을 준 언어Apache Groovy
Boo
Cobra
CoffeeScript
D
F#
GDScript
Go
JavaScript
Julia
Mojo
Nim
Ring
Ruby
Swift
웹사이트python.org
위키북Python Programming
특징
패러다임멀티 패러다임
객체 지향 프로그래밍
절차적 프로그래밍 (명령형 프로그래밍)
함수형 프로그래밍
구조적 프로그래밍
반사 프로그래밍

2. 역사

파이썬을 고안한 귀도 반 로섬


파이썬은 1980년대 말 귀도 반 로섬네덜란드의 Centrum Wiskunde & Informatica(CWI)에서 ABC 프로그래밍 언어의 후속으로 구상하였다. ABC는 SETL에서 영감을 받았으며, 예외 처리를 수행하고 아메바 운영 체제와 인터페이스할 수 있었다. 파이썬 구현은 1989년 12월에 시작되었다. 반 로섬은 2018년 7월 12일까지 수석 개발자로서 프로젝트 책임을 맡았으며, 파이썬 커뮤니티는 그의 장기적인 헌신을 반영하여 "종신 자비로운 독재자"(BDFL)라는 칭호를 부여했다.(그는 이후 은퇴를 번복하고 스스로를 "BDFL-원로"라고 칭했다). 2019년 1월, 파이썬 핵심 개발자들은 프로젝트를 이끌 5명의 운영 위원회를 선출했다.[28][29]

파이썬이라는 이름은 영국 코미디 시리즈 몬티 파이튼의 날아다니는 서커스에서 유래되었다.[30]

파이썬은 들여쓰기를 사용해서 블록을 구분하는 독특한 문법을 채택하고 있다. 이는 파이썬에 익숙한 사용자나 기존 프로그래밍 언어에서 들여쓰기의 중요성을 높이 평가하는 사용자에게는 잘 받아들여지고 있지만, 다른 언어 사용자에게서는 프로그래머의 코딩 스타일을 제한한다는 비판도 받고 있다.

2. 1. 초기 개발

파이썬의 설계자 귀도 반 로섬 (OSCON 2006)


파이썬은 1980년대 말 귀도 반 로섬네덜란드의 Centrum Wiskunde & Informatica(CWI)에서 ABC 프로그래밍 언어의 후속으로 구상하였다. ABC는 SETL에서 영감을 받았으며, 예외 처리를 수행하고 아메바 운영 체제와 인터페이스할 수 있었다. 파이썬 구현은 1989년 12월에 시작되었다.

반 로섬은 2018년 7월 12일까지 수석 개발자로서 프로젝트 책임을 맡았으며, 파이썬 커뮤니티는 그의 장기적인 헌신을 반영하여 "종신 자비로운 독재자"(BDFL)라는 칭호를 부여했다. 그는 이후 은퇴를 번복하고 스스로를 "BDFL-원로"라고 칭했다. 2019년 1월, 파이썬 핵심 개발자들은 프로젝트를 이끌 5명의 운영 위원회를 선출했다.[28][29]

파이썬이라는 이름은 영국 코미디 시리즈 몬티 파이튼의 날아다니는 서커스에서 유래되었다고 한다.[30]

2. 2. 파이썬 2

2000년 10월 16일에 출시된 파이썬 2.0에는 리스트 컴프리헨션, 순환 참조 탐지 기능이 포함된 쓰레기 수집기(GC, Garbage Collector), 유니코드 지원 등 많은 주요 기능이 추가되었다.[2] 파이썬 2.0 개발은 이전보다 더 투명하고 공동체의 지원을 받는 형태로 변화했다.

파이썬 2.7의 제품 수명 종료는 처음에는 2015년으로 설정되었지만, 기존 코드의 상당 부분이 파이썬 3으로 쉽게 이전될 수 없다는 우려로 인해 2020년으로 연기되었다.[31][32] 2020년 1월 1일부로 파이썬 2의 지원이 종료되었다.[232][233]

버전릴리스일[201]지원 종료일[208]
2.02000년 10월 16일 
2.12001년 4월 15일 
2.22001년 12월 21일 
2.32003년 7월 29일 
2.42004년 11월 30일 
2.52006년 9월 19일 
2.62008년 10월 1일2013년 10월 29일
2.72010년 7월 4일2020년 1월 1일


2. 3. 파이썬 3

파이썬 3.0은 코드명 '파이썬 3000' 또는 '파이썬3k'로도 불렸으며, 2008년 12월 3일에 긴 테스트를 거쳐 출시되었다.[209] 파이썬 3.0은 2.x 버전과 하위 호환성이 없다는 것이 가장 큰 특징이다. 그러나 파이썬 3의 주요 기능 다수가 이전 버전과 호환되도록 파이썬 2.6 및 2.7에 백포트되었다.[196]

파이썬 공식 문서에서는 "파이썬 2.x는 레거시(낡은 기술)이고, 파이썬 3.x가 파이썬의 현재와 미래가 될 것"이라고 요약하며, 처음 프로그래밍을 배우는 사람들에게는 파이썬 3으로 시작할 것을 권장한다.[234]

파이썬 2.x 버전과 비교하여 파이썬 3.x 버전의 주요 차이점은 다음과 같다.

  • 사전형과 문자열형 등 내장 자료형의 내부적인 변화 및 일부 구형 구성 요소 제거.
  • 표준 라이브러리 재배치.
  • 향상된 유니코드 지원: 파이썬 2.x에서는 유니코드를 표현하기 위해 `u"문자열"`처럼 유니코드 리터럴을 사용했지만, 파이썬 3.0부터는 모든 문자열이 유니코드이므로 `"문자열"`처럼 표현한다.[235]
  • 한글 변수 사용 가능.
  • `print` 명령문이 `print()` 함수로 변경.[209]


버전릴리즈일[201]지원 종료일[208]
3.02008년 12월 3일2009년 1월 13일
3.12009년 6월 27일2012년 4월 9일
3.22011년 2월 20일2016년 2월 20일
3.32012년 9월 29일2017년 9월 29일
3.42014년 3월 16일2019년 3월 18일
3.52015년 9월 13일2020년 9월 30일
3.62016년 12월 23일2021년 12월
3.72018년 6월 27일2023년 6월
3.82019년 10월 14일2024년 10월
3.92020년 10월 5일2025년 10월
3.102021년 10월 4일2026년 10월
3.112022년 10월 24일2027년 10월
3.122023년 10월 2일2028년 10월



각 버전별 주요 변경 사항은 다음과 같다.

'''3.1'''[210][211]


  • 순서가 있는 사전
  • 단위 테스트 프레임워크 "unittest"에 기능 추가
  • Tkinter에서 Tile 지원
  • import문의 레퍼런스 구현이 되는, 파이썬으로 구현한 importlib 모듈
  • 중첩된 with문에 대한 새로운 문법


'''3.2'''[212]

  • 단위 테스트 모듈의 업데이트 및 확장 모듈용 stable ABI
  • pyc 레포지토리 디렉토리 지원
  • E-mail 패키지 및 SSL 모듈 개선
  • pdb (Python 디버거) 개선


;3.3

: 3.1 릴리즈로부터 2년간, 언어 사양을 동결하고 변경하지 않는 "모라토리엄 기간"을 해제했다[213].

  • 새로운 문법으로, 제너레이터 함수 내에서 다른 제너레이터 함수를 이용하는 "yield from" 추가.
  • "u"나 "U"와 같은 프리픽스를 사용한 유니코드 리터럴 구문 부활
  • UCS-4 문자열에도 대응하여 문자열 표현의 유연성 강화
  • 가상화 파이썬 실행 환경을 도입하기 위한 virtualenv 패키지 기능을 "venv" 기능으로 코어에 통합.


;3.4[214][215]

  • 객체 지향 파일 시스템 경로를 제공하는 "pathlib" 모듈 제공
  • 열거형을 다루기 위한 enum 모듈 표준화
  • 통계 함수를 제공하는 statistics 모듈 도입
  • 파이썬이 할당한 메모리 블록을 추적하기 위한 디버깅 도구인 tracemalloc 모듈 도입
  • 비동기 I/O를 다루기 위한 프레임워크인 asyncio 모듈 도입
  • 파이썬의 내장 함수에 관한 분석 정보를 얻기 위한 기구 구현


;3.5[216][217]

  • zip 애플리케이션 지원 개선
  • byte/bytearray 객체를 위한 "%" 형식 지원 추가
  • 행렬 곱셈 연산자 @ 도입
  • 고속 디렉토리 트래버설 기능 os.scandir() 도입
  • 인터럽트가 발생한 시스템 콜의 자동 재시도 기능 추가
  • 근사치인지 테스트하는 기능 도입
  • .pyo 파일 삭제
  • 확장 모듈을 로드하기 위한 새로운 방식 도입


;3.6[218]

  • 문자열 안에 식을 삽입할 수 있는 "Formatted string literals" 도입
  • 변수에 대해 타입 정보를 (타입 힌트) 제공하는 "Syntax for variable annotations" 도입
  • "async" 및 "await" 문법 (async/await)으로 코루틴을 이용 가능하게 하는 "Asynchronous generators" 도입
  • 표준 라이브러리에 secrets 모듈 추가
  • DTrace 및 SystemTap 프로브 지원 추가


;3.7[219][220]

  • 사용 시점에서 선언되지 않은 타입을 사용한 타입 어노테이션 표기 가능
  • 레거시 C 로케일 억제, 강제 UTF-8 실행 모드
  • breakpoint() 함수 추가
  • dict의 삽입 순서 보존
  • 나노초 (10-9 s) 단위 분해능을 갖는 새로운 시간 함수 추가
  • 컨텍스트 변수
  • 데이터 클래스


;3.8[221]

  • 대입식 :=
  • 위치 전용 매개변수
  • f 문자열에서 f'{expr=}' 형식 지원
  • pickle 프로토콜 5
  • dict에서 reversed 지원


;3.9[222]

  • 딕셔너리 병합 연산자
  • removeprefix(), removesuffix() 메서드 추가
  • 내장 Generic 타입
  • zoneinfo 모듈


;3.10[223]

  • 구조적 패턴 매칭
  • 디버거 등에서 보다 정확한 행 번호 표시
  • 타입 힌트
  • * 유니언 타입을 X | Y로 쓸 수 있게 됨
  • * : TypeAlias 를 부여한 명시적인 타입 별칭
  • * 인수 사양 변수
  • zip 함수 추가 매개변수

2. 4. 버전 업데이트

파이썬은 1989년 12월에 귀도 반 로섬에 의해 구현이 시작되었다. 2018년 7월 12일까지 프로젝트의 최고 개발자를 맡았으며, 파이썬 커뮤니티는 그에게 "종신 자비로운 독재자(BDFL)"라는 칭호를 부여했다. 2019년 1월, 파이썬 핵심 개발자들은 5명의 운영 위원회를 선출했다.[28][29]

파이썬 2.0은 2000년 10월 16일에 출시되었으며, 리스트 컴프리헨션, 순환 참조 탐지 가비지 컬렉션, 참조 카운팅, 유니코드 지원과 같은 기능이 추가되었다. 파이썬 2.7의 제품 수명 종료는 2020년으로 연기되었고,[31][32] 더 이상의 보안 패치나 개선 사항은 출시되지 않는다.[33][34]

파이썬 3.0은 2008년 12월 3일에 출시되었으며, 새로운 구문과 변경된 의미론을 포함했다. 파이썬 3.13이 최신 안정 릴리스이며, 파이썬 3.9가[36] 가장 오래된 지원 버전이다.[37][38] 3.13부터는 2년의 전체 지원 기간과 3년의 보안 지원이 제공된다.

2021년에는 보안 업데이트가 가속화되었는데, 모든 파이썬 버전이 원격 코드 실행[40] 및 웹 캐시 포이즈닝[41]을 유발할 수 있는 보안 문제로 인해 안전하지 않았기 때문이다.

파이썬 3.10은 `|` 유니온 타입 연산자[42]와 구조적 패턴 매칭 문을 추가했다. 3.11은 예외 처리 기능을 확장했다. 파이썬 3.12는 새로운 키워드 `type`을 추가했다. 3.11은 파이썬 3.10보다 10%에서 60% 더 빠르다고 하며,[43] 파이썬 3.12는 5%를 더 추가한다.

파이썬 3.13은 ''실험적'' JIT (적시) 컴파일러[44] 및 전역 인터프리터 잠금(GIL)을 비활성화하는 ''실험적'' 자유 스레드 빌드 모드를 도입했다. 파이썬 3.13은 새로운 "정의된 의미론"을 도입하여 버그를 수정한다.[45]

파이썬 3.14는 현재 알파 2단계에 있다.[48] PEP 711은 파이썬 바이너리 배포를 위한 표준 형식인 PyBI를 제안한다.[50] 파이썬 3.15는 "UTF-8 모드를 기본값으로 설정할 것이다."[51]

파이썬의 개발은 주로 '''파이썬 개선 제안''' (PEP) 프로세스를 통해 진행된다. 파이썬 코딩 스타일은 PEP 8에 설명되어 있다.[118] 언어 개선은 CPython 참조 구현의 개발과 일치한다.

CPython의 공개 릴리스는 세 가지 유형으로 제공된다.

  • 이전 버전과의 호환성이 없는 버전.
  • 주요 또는 "기능" 릴리스는 이전 버전과 대체로 호환되지만 새로운 기능을 도입한다. 파이썬 3.9부터 매년 발생할 것으로 예상된다.[122][123]
  • 버그 수정 릴리스는 새로운 기능을 도입하지 않으며, 약 3개월마다 발생한다.


버전릴리즈일[201]지원 종료일[208]
3.02008년 12월 3일2009년 1월 13일
3.12009년 6월 27일2012년 4월 9일
3.22011년 2월 20일2016년 2월 20일
3.32012년 9월 29일2017년 9월 29일
3.42014년 3월 16일2019년 3월 18일
3.52015년 9월 13일2020년 9월 30일
3.62016년 12월 23일2021년 12월
3.72018년 6월 27일2023년 6월
3.82019년 10월 14일2024년 10월
3.92020년 10월 5일2025년 10월
3.102021년 10월 4일2026년 10월
3.112022년 10월 24일2027년 10월
3.122023년 10월 2일2028년 10월



'''파이썬 3.0'''[209]


  • print 명령어를 print 함수로 변경
  • 유니코드 전면 채용
  • 정수를 int형으로 일원화


'''파이썬 3.1'''[210][211]

  • 순서가 있는 사전
  • 단위 테스트 프레임워크 "unittest"에 기능 추가
  • Tkinter에서 Tile 지원
  • import문의 레퍼런스 구현이 되는, 파이썬으로 구현한 importlib 모듈
  • 중첩된 with문에 대한 새로운 문법


'''파이썬 3.2'''[212]

  • 단위 테스트 모듈의 업데이트 및 확장 모듈용 stable ABI
  • pyc 레포지토리 디렉토리 지원
  • E-mail 패키지 및 SSL 모듈 개선
  • pdb (Python 디버거) 개선


'''파이썬 3.3'''

: 3.1 릴리즈로부터 2년간, 언어 사양을 동결하고 변경하지 않는 "모라토리엄 기간"을 해제했다[213].

  • 새로운 문법으로, 제너레이터 함수 내에서 다른 제너레이터 함수를 이용하는 "yield from" 추가.
  • "u"나 "U"와 같은 프리픽스를 사용한 유니코드 리터럴 구문 부활
  • UCS-4 문자열에도 대응하여 문자열 표현의 유연성 강화
  • 가상화 파이썬 실행 환경을 도입하기 위한 virtualenv 패키지 기능을 "venv" 기능으로 코어에 통합.


'''파이썬 3.4'''[214][215]

  • 객체 지향 파일 시스템 경로를 제공하는 "pathlib" 모듈 제공
  • 열거형을 다루기 위한 enum 모듈 표준화
  • 통계 함수를 제공하는 statistics 모듈 도입
  • 파이썬이 할당한 메모리 블록을 추적하기 위한 디버깅 도구인 tracemalloc 모듈 도입
  • 비동기 I/O를 다루기 위한 프레임워크인 asyncio 모듈 도입
  • 파이썬의 내장 함수에 관한 분석 정보를 얻기 위한 기구 구현


'''파이썬 3.5'''[216][217]

  • zip 애플리케이션 지원 개선
  • byte/bytearray 객체를 위한 "%" 형식 지원 추가
  • 행렬 곱셈 연산자 @ 도입
  • 고속 디렉토리 트래버설 기능 os.scandir() 도입
  • 인터럽트가 발생한 시스템 콜의 자동 재시도 기능 추가
  • 근사치인지 테스트하는 기능 도입
  • .pyo 파일 삭제
  • 확장 모듈을 로드하기 위한 새로운 방식 도입


'''파이썬 3.6'''[218]

  • 문자열 안에 식을 삽입할 수 있는 "Formatted string literals" 도입
  • 변수에 대해 타입 정보를 (타입 힌트) 제공하는 "Syntax for variable annotations" 도입
  • "async" 및 "await" 문법 (async/await)으로 코루틴을 이용 가능하게 하는 "Asynchronous generators" 도입
  • 표준 라이브러리에 secrets 모듈 추가
  • DTrace 및 SystemTap 프로브 지원 추가


'''파이썬 3.7'''[219][220]

  • 사용 시점에서 선언되지 않은 타입을 사용한 타입 어노테이션 표기 가능
  • 레거시 C 로케일 억제, 강제 UTF-8 실행 모드
  • breakpoint() 함수 추가
  • dict의 삽입 순서 보존
  • 나노초 (10-9 s) 단위 분해능을 갖는 새로운 시간 함수 추가
  • 컨텍스트 변수
  • 데이터 클래스


'''파이썬 3.8'''[221]

  • 대입식 :=
  • 위치 전용 매개변수
  • f 문자열에서 f'{expr=}' 형식 지원
  • pickle 프로토콜 5
  • dict에서 reversed 지원


'''파이썬 3.9'''[222]

  • 딕셔너리 병합 연산자
  • removeprefix(), removesuffix() 메서드 추가
  • 내장 Generic 타입
  • zoneinfo 모듈


'''파이썬 3.10'''[223]

  • 구조적 패턴 매칭
  • 디버거 등에서 보다 정확한 행 번호 표시
  • 타입 힌트
  • * 유니언 타입을 X | Y로 쓸 수 있게 됨
  • * : TypeAlias 를 부여한 명시적인 타입 별칭
  • * 인수 사양 변수
  • zip 함수 추가 매개변수


'''파이썬 3.11'''[224]

'''파이썬 3.12'''[225]

2. 5. 인기와 영향력

파이썬은 초보자부터 전문가까지 폭넓은 사용자층을 가진 동적 타이핑 범용 프로그래밍 언어이다. , 루비와 자주 비교되며, 다양한 플랫폼에서 사용 가능하고 풍부한 라이브러리(모듈)를 제공하여 대학, 연구 기관, 산업계에서 널리 활용되고 있다.

ACM의 조사에 따르면, 파이썬은 자바를 넘어 미국 대학생들에게 프로그래밍 및 컴퓨터 공학 입문용으로 가장 널리 사용되는 언어로 나타났다. 상위 10개 컴퓨터 공학 부문 중 8곳, 상위 39개 학교 중 27곳에서 코딩 교육에 파이썬을 활용하고 있다.[231]

2003년 이후, 파이썬은 TIOBE 프로그래밍 커뮤니티 지수에서 꾸준히 상위 10위 안에 랭크되었으며, 현재 가장 인기 있는 언어이다 (C, C++, 자바보다 앞선다).[26] 또한 2007년, 2010년, 2018년, 2020년에 올해의 프로그래밍 언어("1년 동안 가장 높은 순위 상승")로 선정되었다 (4번이나 선정된 유일한 언어).[131]

파이썬의 설계와 철학은 다른 프로그래밍 언어에도 영향을 주었다.

언어설명
부(Boo)파이썬과 유사하게 들여쓰기, 구문, 객체 모델을 사용한다.
코브라(Cobra)들여쓰기와 유사한 구문을 사용하며, 파이썬을 코브라에 영향을 준 첫 번째 언어로 언급한다.
커피스크립트(CoffeeScript)파이썬에서 영감을 받은 구문을 사용한다.
ECMAScript–자바스크립트파이썬의 반복자와 제너레이터를 차용했다.
GDScript파이썬과 매우 유사한 스크립트 언어로, 고도(Godot) 게임 엔진에 내장되어 있다.[155]
고(Go)파이썬과 같은 동적 언어로 작업하는 속도를 위해 설계되었으며, 배열 슬라이싱에 동일한 구문을 공유한다.
그루비(Groovy)파이썬의 설계 철학을 자바(Java)에 적용하고자 했다.
줄리아(Julia)파이썬처럼 일반적인 프로그래밍에 사용 가능하도록 설계되었다.[156]
모조(Mojo)파이썬의 비엄격한 상위 집합이다(예: 아직 클래스가 없고, 구조체 등을 추가함).[158]
(Nim)들여쓰기와 유사한 구문을 사용한다.[159]
루비(Ruby)창시자인 마츠모토 유키히로는 파이썬보다 더 객체 지향적인 스크립트 언어를 원했기 때문에 직접 설계했다고 밝혔다.
스위프트(Swift)파이썬에서 영감을 얻은 구문을 일부 가지고 있다.[160]
코틀린(Kotlin)파이썬과 자바의 기능을 혼합하여 개발자 효율성을 향상시키기 위해 상용구 코드를 최소화한다.[161]



파이썬의 개발 관행은 Tcl, 얼랭(Erlang), 스위프트[162] 등 다른 언어에서도 모방되었다.

3. 철학과 특징

귀도 반 로섬이 개발한 프로그래밍 언어인 파이썬의 핵심 철학은 ''PEP 20'' 문서에 잘 정리되어 있으며, 다음과 같다.[236]


  • "아름다운 게 추한 것보다 낫다." (Beautiful is better than ugly)
  • "명시적인 것이 암시적인 것보다 낫다." (Explicit is better than implicit)
  • "단순함이 복잡함보다 낫다." (Simple is better than complex)
  • "복잡함이 난해한 것보다 낫다." (Complex is better than complicated)
  • "가독성은 중요하다." (Readability counts)


파이썬은 모든 기능을 언어 자체에 포함하는 대신, 사용자가 필요에 따라 기능을 확장할 수 있도록 설계되었다. 이는 "문제를 해결하는 방법은 단 한 가지가 아니다"라는 의 철학과 대조적이다. 파이썬은 "하나의 분명한 방법, 가급적이면 단 하나의 분명한 방법이 있어야 한다"는 철학을 따르지만, 실제로는 동일한 작업을 수행하는 여러 가지 방법을 제공하기도 한다.[58]

파이썬은 읽기 쉽고 효율적인 코드를 간결하게 작성할 수 있도록 하는 철학이 반영되어 있으며, 파이썬 커뮤니티에서도 이러한 코드를 선호한다. 파이썬 소프트웨어 재단의 펠로우이자 파이썬 책 저자인 알렉스 마르텔리는 "무언가를 '영리하다'고 묘사하는 것은 파이썬 문화에서 ''칭찬''으로 간주되지 않는다."라고 썼다.

파이썬은 기본적으로 인터프리터 위에서 실행되도록 설계되었으며 다음과 같은 주요 특징을 가진다.

  • 동적 타이핑
  • 객체 멤버에 무제한 접근 가능 (속성이나 메서드 훅을 통해 제한 가능)
  • 모듈, 클래스, 객체와 같은 요소에 내부 접근 가능, 리플렉션 기술 사용 가능
  • 가비지 컬렉션


파이썬은 여러 프로그래밍 패러다임을 지원하는 언어이다. 객체 지향 프로그래밍구조적 프로그래밍을 완벽하게 지원하며, 함수형 프로그래밍, 관점 지향 프로그래밍 등도 주요 기능에서 지원된다.

파이썬은 포괄적인 표준 라이브러리 덕분에 "배터리 포함(Battery Included)" 언어로 표현되기도 한다.[164]

4. 문법

파이썬 문법의 가장 두드러진 특징은 들여쓰기를 사용하여 코드 블록을 구조화한다는 것이다. 이는 C와 같은 다른 언어에서 중괄호({})를 사용하여 블록을 구분하는 것과 대조적이다. 파이썬에서는 들여쓰기가 단순한 코딩 스타일이 아니라 필수적인 문법 요소로, 코드의 가독성과 일관성을 높이는 데 기여한다.

파이썬은 읽기 쉬운 언어를 지향하며, 다른 언어에서 구두점을 사용하는 곳에 영어 키워드를 사용한다. 블록 구분을 위해 중괄호를 사용하지 않고, 문장 뒤에 세미콜론은 거의 사용하지 않는다. C파스칼보다 구문 예외와 특수한 경우가 적다.

파이썬은 인터프리터 상에서 실행하는 것을 전제로 설계되었으며, 다음과 같은 특징을 가진다.


  • 동적 타이핑
  • 가비지 컬렉션
  • 멀티 패러다임 프로그래밍 언어
  • 모듈, 클래스, 객체 등의 언어 요소에 내부적으로 접근 가능하며, 리플렉션을 이용한 기술이 가능하다.


파이썬은 "어떤 일을 하는 데에는 단 하나의 좋은 방법이 있을 것이다"라는 철학을 가지고 있으며, 단순하고 간결한 코드를 지향한다.

파이썬은 다음과 같은 자료형들을 갖고 있다.

  • 기본 자료형:
  • 정수형
  • 긴 정수형(long integer) - 파이썬 3 버전에서는 정수형의 범위가 무제한으로 확장되었다.
  • 부동소수점
  • 복소수
  • 문자형
  • 유니코드 문자형
  • 함수
  • 논리형(boolean)

  • 집합형 자료형:
  • 리스트형 - 내부의 값을 나중에 바꿀 수 있다.
  • 튜플(tuple)형 - 한 번 값을 정하면 내부의 값을 바꿀 수 없다.
  • 사전형 - 내부의 값을 나중에 바꿀 수 있다.
  • 집합형 - 중복을 허락하지 않는다. 변경 가능하게도, 변경 불가능하게도 만들 수 있다.


또한, 사용자가 새롭게 자신의 형을 정의할 수도 있다. 파이썬은 동적 타이핑의 일종인 덕 타이핑을 사용하는 언어이기 때문에, 변수가 아닌 값이 타입을 가지고 있고, 변수는 모두 값의 참조(C++의 참조)이다.

파이썬 3의 내장 자료형 요약
종류설명문법 예
int이뮤터블(immutable)정수로서 크기는 무제한.42
float이뮤터블(immutable)부동소수점 수 (시스템 정의 정밀도).3.14159265358979
complex이뮤터블(immutable)복소수. (실수와 허수)3+2.7j
bool이뮤터블(immutable)진리값. (불린)True
False
str이뮤터블(immutable)문자열: 일련의 유니코드 코드포인트.Wikipedia
"Wikipedia"
"""Spanning
multiple
lines"""
bytes이뮤터블(immutable)일련의 바이트.bSome ASCII
b"Some ASCII"
bytes([119, 105, 107, 105])
bytearray뮤터블(mutable)일련의 바이트.bytearray(bSome ASCII)
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])
list뮤터블(mutable)목록, 리스트.[4.0, string, True]
tuple이뮤터블(immutable)(불변) 목록.(4.0, string, True)
set,뮤터블(mutable),순서가 정해지지 않은{4.0, string, True}
frozenset([4.0, string, True])
dict뮤터블(mutable)연관 배열 목록. (키와 값 목록){key1: value1, key2: value2}



파이썬에서는 다룰 수 있는 모든 데이터가 객체이다. 단순한 숫자와 같은 기본적인 데이터 형식을 시작으로, 내장 컨테이너 형, 내장 함수 등, 이들은 모두 통일적인 상속 관계를 가진 객체이며 "타입"을 가지고 있다. 이러한 내장형과 사용자 정의형은 구별되지 않으며, 내장형을 상속한 클래스를 정의할 수 있다.

클래스의 상속(inheritance영어) 메커니즘에서는, 여러 개의 기반 클래스를 가질 수 있으며 (다중 상속), 파생된 클래스에서는 기반 클래스의 임의의 메서드를 오버라이드(override영어; 덮어쓰기)할 수 있다.

또한, 객체에는 임의의 데이터를 넣을 수 있다. 이러한 메서드와 데이터는 기본적으로 모두 public이며, virtual(가상)이다. 단, 처음에 언더스코어를 가진 멤버를 private로 할 수 있다.

4. 1. 들여쓰기

파이썬의 문법에서 가장 잘 알려진 특징은 들여쓰기를 이용한 블록 구조이다. 이는 C 등에서 사용하는 중괄호({})를 이용한 블록 구조 대신, 줄마다 처음 오는 공백으로 블록을 구분하는 방식이다. 이 방식은 눈에 보이는 블록 구조가 논리적인 제어 구조와 일치하도록 한다.[62]

아래는 계승을 계산하는 함수를 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 코드'''



int factorial(int x) {

if(x == 0) {return 1;} else

{return x * factorial(x - 1); } }



파이썬에서는 들여쓰기가 필수 문법이므로 위와 같이 작성하는 것이 불가능하다. 이러한 강제는 소스 코드 스타일을 통일하여 가독성을 높이는 장점이 있다. 하지만 프로그래머가 스타일을 선택할 자유를 제약한다는 비판도 있다.[167]

파이썬에서는 다음과 같이 줄바꿈 없이 한 줄로 작성하는 것도 가능하다.



def factorial(x):

return 1 if x==0 else x * factorial(x - 1)



이러한 방식을 'pythonic 하다'라고 표현하기도 한다.

파이썬의 들여쓰기 문법은 비판을 받기도 한다. 비정규적이고 자동화가 불가능하며,[237] 공백의 양에 따라 코드의 의미가 달라질 수 있다는 점, 그리고 들여쓰기만으로 코드를 판단할 경우 논리적 버그를 유발할 수 있다는 점[238] 등이 지적된다.

파이썬 코드와 들여쓰기의 예


중괄호와 세미콜론을 사용한 C# 코드의 예

4. 2. 문장과 제어 흐름

파이썬은 읽기 쉬운 언어를 지향하며, 다른 언어에서 구두점을 사용하는 곳에 영어 키워드를 사용한다. 블록 구분을 위해 중괄호를 사용하지 않고, 문장 뒤에 세미콜론은 거의 사용하지 않는다. C파스칼보다 구문 예외와 특수한 경우가 적다.

파이썬의 문장에는 다음이 포함된다:

  • 할당문 (`=`): 단일 등호 `=`를 사용한다.
  • `if` 문: 코드 블록을 조건부로 실행하며, `else` 및 `elif` (else-if의 축약형)와 함께 사용된다.
  • `for` 문: ''반복 가능한'' 객체를 반복한다.
  • `while` 문: 조건이 참인 동안 코드 블록을 실행한다.
  • `try` 문: 코드 블록에서 발생한 예외를 `except` 절로 처리하고, `finally` 블록에서 정리 코드를 실행한다.
  • `raise` 문: 지정된 예외를 발생시키거나 잡은 예외를 다시 발생시킨다.
  • `class` 문: 객체 지향 프로그래밍에 사용되는 클래스를 정의한다.
  • `def` 문: 함수 또는 메서드를 정의한다.
  • `with` 문: 코드 블록을 컨텍스트 관리자 내에 묶어 자원 획득은 초기화(RAII)와 유사한 동작을 허용한다.[65]
  • `break` 문: 루프를 종료한다.
  • `continue` 문: 현재 반복을 건너뛰고 다음 반복을 계속한다.
  • `del` 문: 변수를 제거한다.
  • `pass` 문: 빈 코드 블록을 만드는 데 사용되는 NOP 역할을 한다.
  • `assert` 문: 디버깅에 사용되며, 조건을 확인한다.
  • `yield` 문: 제너레이터 함수에서 값을 반환하고 코루틴을 구현하는 데 사용된다.
  • `return` 문: 함수에서 값을 반환한다.
  • `import` 및 `from` 문: 모듈의 함수 또는 변수를 가져온다.
  • `match` 및 `case` 문: switch 문의 아날로그로, 표현식을 여러 케이스와 비교한다.


할당문(`=`)은 이름을 별도의 동적으로 할당된 객체에 대한 참조로 바인딩하며, 변수는 언제든지 다른 객체에 다시 바인딩될 수 있다. 파이썬에서 변수 이름은 고정된 데이터 유형이 없는 일반적인 참조 홀더이며, 항상 형식이 있는 객체를 참조하는 동적 타이핑을 사용한다.

파이썬은 꼬리 호출 최적화나 일급 연속을 지원하지 않으며, 앞으로도 지원하지 않을 것이다. 그러나 제너레이터를 확장하여 코루틴과 유사한 기능을 제공한다.

파이썬은 "어떤 일을 하는 데에는 단 하나의 좋은 방법이 있을 것이다"라는 철학을 가지고 있다.

파이썬은 들여쓰기가 구문 규칙으로 강제되어 소스 코드 스타일이 통일되고 가독성이 높아진다는 특징이 있다. 이는 찬반 양론이 있지만, 인간의 육안 확인과 컴파일러의 구문 분석 차이를 줄여 정확한 코딩을 돕는다고 주장한다.[167]

4. 3. 표현식

파이썬의 식은 다음과 같다.

  • 수학적 덧셈, 뺄셈, 곱셈을 위한 `+`, `-`, `*` 연산자는 다른 언어와 유사하지만, 나눗셈은 다르다. 파이썬에는 몫 나눗셈(정수 나눗셈) `//`과 부동 소수점 `/` 나눗셈 두 가지가 있다.[66] 파이썬은 거듭제곱을 위해 `**` 연산자를 사용한다.
  • 파이썬은 문자열 연결을 위해 `+` 연산자를 사용한다. 또한, 지정된 횟수만큼 문자열을 복제하기 위해 `*` 연산자를 사용한다.
  • `@` 중위 연산자는 NumPy와 같은 라이브러리에서 행렬 곱셈을 위해 사용하도록 의도되었다.[67][68]
  • "왈러스 연산자"라고 불리는 `:=` 구문은 파이썬 3.8에 도입되었다. 이 연산자는 더 큰 식의 일부로 변수에 값을 할당한다.[69]
  • 파이썬에서 `==`는 값으로 비교한다. 파이썬의 `is` 연산자는 객체 동일성(참조로 비교)을 비교하는 데 사용될 수 있으며, 비교는 연결될 수 있다(예: `a <= b <= c`).
  • 파이썬은 부울 연산자로 `and`, `or`, `not`을 사용한다.
  • 파이썬에는 ''리스트 컴프리헨션''이라고 하는 식 유형과 ''제너레이터 식''이라고 하는 더 일반적인 식이 있다.
  • 익명 함수는 람다 식을 사용하여 구현된다. 그러나 각 본문에는 하나의 식만 있을 수 있다.
  • 조건식은 `x if c else y`로 작성된다. (다른 많은 언어에서 흔히 사용되는 `c ? x : y` 연산자와 피연산자 순서가 다르다).
  • 파이썬은 리스트와 튜플을 구별한다. 리스트는 `[1, 2, 3]`으로 작성되며, 변경 가능하며, 사전의 키로 사용할 수 없다(사전 키는 파이썬에서 불변이어야 한다). 튜플은 `(1, 2, 3)`으로 작성되며, 불변이므로 튜플의 모든 요소가 불변인 경우 사전의 키로 사용할 수 있다. `+` 연산자는 두 개의 튜플을 연결하는 데 사용할 수 있으며, 이는 내용물을 직접 수정하지 않고 두 튜플의 요소를 포함하는 새 튜플을 생성한다. 괄호는 모호하지 않은 컨텍스트에서 튜플에 대해 선택 사항이다.[70]
  • 파이썬은 여러 식을 사용할 수 있는 ''시퀀스 언패킹'' 기능을 제공하며, 각 식은 할당 가능한 모든 것(변수, 쓰기 가능한 속성 등)으로 평가되며, 튜플 리터럴을 형성하는 것과 동일한 방식으로 연결되어 할당문의 등호의 왼쪽에 전체적으로 놓인다. 이 문은 등호의 오른쪽에 제공된 쓰기 가능한 식과 동일한 수의 값을 생성하는 ''반복 가능'' 객체를 예상한다. 이를 반복하면 생성된 각 값이 왼쪽에 있는 해당 식에 할당된다.[71]
  • 파이썬에는 C의 `printf` 형식 문자열과 유사하게 작동하는 "문자열 형식" 연산자 `%`가 있다. 예를 들어 `"spam=%s eggs=%d" % ("blah", 2)`는 `"spam=blah eggs=2"`로 평가된다. 파이썬 2.6+ 및 3+에서는 `str` 클래스의 `format()` 메서드(예: `"spam={0} eggs={1}".format("blah", 2)`)로 보완되었다. 파이썬 3.6에서는 "f-문자열"이 추가되었다: `spam = "blah"; eggs = 2; f'spam={spam} eggs={eggs}'`.[72]
  • 파이썬의 문자열은 "더하기"(정수 및 부동 소수점 숫자 더하기와 동일한 연산자 사용)를 통해 연결될 수 있다. 예: `"spam" + "eggs"`는 `"spameggs"`를 반환한다. 문자열에 숫자가 포함된 경우 정수가 아닌 문자열로 더해진다. 예: `"2" + "2"`는 `"22"`를 반환한다.
  • 파이썬에는 다양한 문자열 리터럴이 있다.
  • 작은따옴표 또는 큰따옴표로 구분한다. 유닉스 셸, Perl, 및 Perl의 영향을 받은 언어와 달리 작은따옴표와 큰따옴표는 동일하게 작동한다. 둘 다 이스케이프 문자로 백슬래시(`\`)를 사용한다. 문자열 보간은 파이썬 3.6에서 "형식화된 문자열 리터럴"로 사용할 수 있게 되었다.[72]
  • 삼중 따옴표(세 개의 작은따옴표 또는 큰따옴표로 시작하고 끝남)는 여러 줄에 걸쳐 있을 수 있으며 셸, Perl 및 Ruby의 히어 문서와 같이 작동한다.
  • `r`로 문자열 리터럴을 접두사로 붙여 표시되는 원시 문자열 종류. 이스케이프 시퀀스는 해석되지 않으므로 원시 문자열은 정규 표현식 및 Windows 스타일 경로와 같이 리터럴 백슬래시가 일반적인 경우에 유용하다. ( C#의 "`@`-따옴표"와 비교).
  • 파이썬에는 배열 인덱스 및 배열 슬라이싱 식이 리스트에 있으며, `a[key]`, `a[start:stop]` 또는 `a[start:stop:step]`으로 표시된다. 인덱스는 0부터 시작하며, 음수 인덱스는 끝을 기준으로 한다. 슬라이스는 ''시작'' 인덱스부터 ''중지'' 인덱스까지(포함하지 않음) 요소를 가져온다. 세 번째 슬라이스 매개변수(''단계'' 또는 ''스트라이드'')를 사용하면 요소를 건너뛰고 반전시킬 수 있다. 슬라이스 인덱스는 생략할 수 있다. 예를 들어 `a[:]`는 전체 리스트의 복사본을 반환한다. 슬라이스의 각 요소는 얕은 복사이다.

4. 4. 메서드

객체의 메서드는 객체의 클래스에 연결된 함수이다. 일반적인 메서드와 함수에 대해 `instance.method(argument)` 구문은 `Class.method(instance, argument)`의 구문 설탕이다. 파이썬 메서드는 인스턴스 데이터에 접근하기 위해 명시적인 `self` 매개변수를 갖는데, 이는 C++, Java, Objective-C, Ruby 등 다른 객체 지향 프로그래밍 언어의 암시적 `self` (또는 `this`)와는 대조적이다.

5. 자료형

파이썬은 동적 타이핑의 일종인 덕 타이핑을 사용하는 언어이다. 변수가 아닌 값이 타입을 가지고 있고, 변수는 모두 값의 참조이다.

파이썬은 덕 타이핑을 사용하며, 타입이 지정된 객체를 가지지만 타입이 지정되지 않은 변수 이름을 사용한다. 타입 제약 조건은 컴파일 시간에 검사되지 않는다. 대신, 객체에 대한 연산이 실패할 수 있으며, 이는 해당 객체가 적절한 타입이 아님을 나타낸다. 동적 타입 언어임에도 불구하고, 파이썬은 강력한 타입 언어이며, 의미를 파악하려는 시도 대신 잘 정의되지 않은 연산 (예: 숫자와 문자열을 더하는 것)을 금지한다.

파이썬은 프로그래머가 클래스를 사용하여 자신만의 타입을 정의할 수 있도록 하며, 이는 주로 객체 지향 프로그래밍에 사용된다. 클래스의 새로운 인스턴스는 클래스를 호출하여 생성된다. 이 클래스들은 메타클래스 type (자신의 인스턴스)의 인스턴스이며, 메타 프로그래밍과 리플렉션을 허용한다.

버전 3.0 이전에는 파이썬에 두 종류의 클래스 (모두 동일한 구문 사용)가 있었다: ''구식 스타일''과 ''신식 스타일''. 현재 파이썬 버전은 신식 스타일의 의미론만 지원한다.

파이썬은 선택적 타입 주석을 지원한다.[4][74] 이러한 주석은 언어 자체에서 강제되지 않지만, mypy와 같은 외부 도구에서 오류를 감지하는 데 사용될 수 있다.[75][76] Mypy는 또한 최적화를 위해 타입 주석을 활용하는 mypyc라는 파이썬 컴파일러를 지원한다.[77]

파이썬은 동적 타이핑 시스템을 가지며, 동시에 임의의 타입 힌트를 가지고 외부 도구를 통한 정적 타입 검사를 가능하게 한다. 값 자체가 타입을 가지며, 변수는 모두 값에 대한 참조이다.

기본적인 자료형으로, 논리형, 정수형, 부동소수점형, 복소수형, 문자열형, 바이트열형, 함수형이 있다. 정수형은 (메모리가 허용하는 한) 무제한의 자릿수로 정수 계산이 가능하다. 부동소수점형을 정수형으로 캐스트하면 소수점 이하가 버려진다.

내장 컨테이너형으로, 리스트형, 튜플형, 딕셔너리형, 집합형이 있다. 리스트형 및 딕셔너리형은 가변, 튜플형은 불변이다. 집합형에는 변경 가능한 것과 변경 불가능한 것의 두 종류가 있다. 튜플형과 리스트형은 많은 프로그래밍 언어에서 배열이라고 불리는 것과 유사하다. 그러나 파이썬에서는 튜플형은 딕셔너리의 키로 사용할 수 있지만, 리스트형은 내용이 바뀌기 때문에 딕셔너리의 키로 사용할 수 없다는 이유로 이 두 가지 형을 구분하고 있다.

많은 객체 지향 프로그래밍 언어와 마찬가지로, 파이썬에서는 사용자가 새롭게 자신의 타입을 정의하는 것도 가능하다. 이 경우, 내장 타입을 포함한 기존의 타입을 상속하여 새로운 타입(클래스)을 정의하는 것도, 처음부터 완전히 새로운 타입을 만들어내는 것도 가능하다.

파이썬은 기본적으로 메서드나 함수의 인수에 타입을 지정할 필요가 없다. 따라서 덕 타이핑이라는, 내부에서 필요로 하는 연산자나 메서드에 대응하고 있다면, 함수나 객체의 설계 시점에 의도하지 않았던 객체를 넘겨주는 것도 가능하다. 파이썬은 인터프리터형 언어이며 (대부분의 경우) 프로그램 실행 시 실행 환경(런타임)을 필요로 한다.

5. 1. 기본 자료형

Falsestr이뮤터블문자열: 일련의 유니코드 코드포인트.Wikipedia
"Wikipedia"
"""Spanning
multiple
lines"""
bytes이뮤터블일련의 바이트.bSome ASCII
b"Some ASCII"
bytes([119, 105, 107, 105])bytearray뮤터블일련의 바이트.bytearray(bSome ASCII)
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])list뮤터블목록, 리스트.[4.0, string, True]tuple이뮤터블(불변) 목록.(4.0, string, True)set,뮤터블, 이뮤터블순서가 정해지지 않은{4.0, string, True}
frozenset([4.0, string, True])dict뮤터블연관 배열 목록. (키와 값 목록){key1: value1, key2: value2}



파이썬 3의 표준 타입 계층


파이썬은 덕 타이핑을 사용하며, 타입이 지정된 객체를 가지지만 타입이 지정되지 않은 변수 이름을 사용한다. 타입 제약 조건은 컴파일 시간에 검사되지 않는다. 대신, 객체에 대한 연산이 실패할 수 있으며, 이는 해당 객체가 적절한 타입이 아님을 나타낸다. 동적 타입 언어임에도 불구하고, 파이썬은 강력한 타입 언어이며, 의미를 파악하려는 시도 대신 잘 정의되지 않은 연산 (예: 숫자와 문자열을 더하는 것)을 금지한다.

파이썬은 프로그래머가 클래스를 사용하여 자신만의 타입을 정의할 수 있도록 하며, 이는 주로 객체 지향 프로그래밍에 사용된다. 클래스의 새로운 인스턴스는 클래스를 호출하여 생성된다. 이 클래스들은 메타클래스 type (자신의 인스턴스)의 인스턴스이며, 메타 프로그래밍과 리플렉션을 허용한다.

버전 3.0 이전에는 파이썬에 두 종류의 클래스 (모두 동일한 구문 사용)가 있었다: ''구식 스타일''과 ''신식 스타일''. 현재 파이썬 버전은 신식 스타일의 의미론만 지원한다.

파이썬은 선택적 타입 주석을 지원한다.[4][74] 이러한 주석은 언어 자체에서 강제되지 않지만, mypy와 같은 외부 도구에서 오류를 감지하는 데 사용될 수 있다.[75][76] Mypy는 또한 최적화를 위해 타입 주석을 활용하는 mypyc라는 파이썬 컴파일러를 지원한다.[77]

파이썬 3의 내장 타입 요약
타입불변성설명구문 예시
bool불변부울 값True
False
bytearray가변바이트 시퀀스bytearray(bSome ASCII)
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])
bytes불변바이트 시퀀스bSome ASCII
b"Some ASCII"
bytes([119, 105, 107, 105])
complex불변실수부와 허수부를 가진 복소수3+2.7j
3 + 2.7j
dict가변키-값 쌍의 연관 배열 (또는 딕셔너리); 혼합 타입 (키와 값)을 포함할 수 있으며, 키는 해시 가능 타입이어야 함{key1: 1.0, 3: False}
{}
types.EllipsisType불변줄임표는 NumPy 배열의 인덱스로 사용되는 자리 표시자...
Ellipsis
float불변배정밀도 부동 소수점 수. 정밀도는 머신에 따라 다르지만 실제로는 일반적으로 64비트 IEEE 754 숫자로 구현되며 정밀도는 53 비트이다.[78]1.33333
frozenset불변중복을 포함하지 않는 순서가 없는 집합; 해시 가능하다면 혼합 타입을 포함할 수 있음frozenset([4.0, string, True])
int불변무제한 크기의 정수42
list가변리스트, 혼합 타입을 포함할 수 있음[4.0, string, True]
[]
types.NoneType불변값이 없음을 나타내는 객체, 다른 언어에서는 종종 null이라고 불림None
types.NotImplementedType불변지원되지 않는 피연산자 타입을 나타내기 위해 오버로드된 연산자에서 반환될 수 있는 자리 표시자.NotImplemented
range불변for 루프에서 특정 횟수만큼 반복하는 데 일반적으로 사용되는 숫자의 불변 시퀀스[79]range(−1, 10)
range(10, −5, −2)
set가변중복을 포함하지 않는 순서가 없는 집합; 해시 가능하다면 혼합 타입을 포함할 수 있음{4.0, string, True}
set()
str불변문자열: 유니코드 코드 포인트 시퀀스Wikipedia
"Wikipedia"
"""Spanning
tuple불변혼합 타입을 포함할 수 있음(4.0, string, True)
(single element,)
()


5. 2. 집합형 자료형

Falsestr이뮤터블문자열: 일련의 유니코드 코드포인트.Wikipedia
"Wikipedia"
"""Spanning
multiple
lines"""
bytes이뮤터블일련의 바이트.bSome ASCII
b"Some ASCII"
bytes([119, 105, 107, 105])bytearray뮤터블일련의 바이트.bytearray(bSome ASCII)
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])list뮤터블목록, 리스트.[4.0, string, True]tuple이뮤터블(불변) 목록.(4.0, string, True)set,뮤터블, 이뮤터블.순서가 정해지지 않은 집합. 중복 허용 안 함.{4.0, string, True}
frozenset([4.0, string, True])dict뮤터블연관 배열 목록. (키와 값 목록){key1: value1, key2: value2}


5. 3. 내장 자료형 요약

Falsestr이뮤터블문자열 (유니코드 코드포인트의 연속)Wikipedia
"Wikipedia"
"""Spanning
multiple
lines"""
bytes이뮤터블바이트의 연속bSome ASCII
b"Some ASCII"
bytes([119, 105, 107, 105])bytearray뮤터블바이트의 연속bytearray(bSome ASCII)
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])list뮤터블리스트 (혼합 형태 포함 가능)[4.0, string, True]tuple이뮤터블(불변) 목록 (혼합 형태 포함 가능)(4.0, string, True)set,뮤터블, 이뮤터블순서가 없는 집합 (중복 허용 안 함){4.0, string, True}
frozenset([4.0, string, True])dict뮤터블연관 배열 (키와 값 목록){key1: value1, key2: value2}


6. 동작하는 플랫폼

매킨토시에서 사용할 목적으로 개발된 첫 파이썬 버전은 현재 다양한 플랫폼에서 동작한다. 하지만 안드로이드/iOS에서는 공식적으로 동작하지 않는다.

파이썬이 동작하는 플랫폼은 다음과 같다.



안드로이드와 iOS에서 공식적으로 동작하지 않지만, 이를 위한 별도 프로젝트가 존재한다.

7. 한글 처리

파이썬은 원래 미국 지역에서 개발되었기 때문에 한글이나 한자와 같은 2바이트 문자를 지원하지 않았다. 그러나 파이썬 2.0에서 유니코드 문자형을 새로 도입하여 여러 나라의 언어를 다룰 수 있게 되었다. 다른 스크립트 언어와 달리 파이썬에서는 문자의 인코딩과 내부 유니코드 표현을 명확하게 구별한다. 유니코드 문자는 메모리에 저장되는 추상적인 개체이다. 화면에 나타내거나 파일 입출력을 할 때는 변환 코덱의 힘을 빌려서 특정 인코딩으로 변환한다. 또, 소스 코드의 문자 코드를 인식하는 기능이 있어, 다른 문자 코드로 쓰여진 프로그램의 동작이 달라질 위험을 줄여 준다. 파이썬 2.4에서는 한·중·일 코덱이 표준으로 배포판에 포함되었으므로 이제 한글 처리에 문제는 거의 없다. 예를 들어 윈도우 판의 IDLE에서 한글 입출력을 잘 지원한다.

파이썬 3.0에서는 문자열이 기본적으로 유니코드로 처리되기 때문에, 파이썬 2.x에서처럼 별도의 유니코드 리터럴을 사용할 필요가 없어졌다.[235]

8. 사용 현황

파이썬은 초보자부터 전문가까지 폭넓은 사용자층을 가진 동적 타이핑 범용 프로그래밍 언어로, , 루비와 자주 비교된다. 다양한 플랫폼에서 사용 가능하고 풍부한 라이브러리(모듈)를 제공하여 대학, 연구 기관, 산업계에서 널리 활용되고 있다. 특히, 다른 언어로 작성된 모듈을 연결하는 접착제 언어로써, 그리고 많은 상용 응용 프로그램에서 스크립트 언어로 채택되고 있다. 유니코드 문자열을 지원하여 다양한 언어의 문자 처리에도 능숙하다.[231]

Python Powered


파이썬은 아파치 웹 서버의 mod_wsgi영어를 통해 웹 애플리케이션 개발에 사용될 수 있다. 또한, NumPy, SciPy, Matplotlib 등의 라이브러리를 활용하여 과학 컴퓨팅 분야에서도 널리 사용된다.[138][139] TensorFlow, Keras, Pytorch, scikit-learn 등의 라이브러리를 통해 인공 지능 및 기계 학습 프로젝트에도 활용된다.[142][143][144][145][146]

정보 보안 산업, 특히 익스플로잇 개발에도 파이썬이 광범위하게 사용된다. One Laptop per Child XO의 Sugar 소프트웨어와 Raspberry Pi 싱글 보드 컴퓨터 프로젝트에서도 파이썬이 주요 프로그래밍 언어로 채택되었다.

파이썬은 마이크로소프트, 애플, 구글, 야후!, 유튜브 등의 대기업과 NASA, 일본의 고에너지 가속기 연구기구[181] 등 연구기관에서도 널리 사용되고 있다. 특히, 노키아에서는 S60 시리즈에서 파이썬 애플리케이션을 실행할 수 있다.[180]

8. 1. 주요 활용 분야

파이썬은 웹 개발, 데이터 분석, 과학 컴퓨팅, 인공지능, 머신 러닝, 자연어 처리, 스크립트 언어 등 다양한 분야에서 활용된다.

JetBrains와 파이썬 소프트웨어 재단의 공동 조사에 따르면, 2017년 10월 현재 파이썬의 가장 주요한 용도는 데이터 과학(27%, 그 중 18%는 데이터 분석, 9%는 기계 학습)이었다.[203]

8. 2. 파이썬 기반 소프트웨어

다음은 파이썬으로 작성된 주요 자유-오픈 소스 소프트웨어 목록이다.

8. 3. 파이썬 채택 기업/기관

잉크스케이프, 페인트샵 프로, 문명 IV, 오토데스크 마야, Blender 3D, 카카오톡, 야후, 구글, 유튜브, 미국항공우주국(NASA), 미국 해양대기청(NOAA), 카카오 등 여러 기업 및 기관에서 파이썬을 활용하고 있다.[231] 이들은 파이썬을 사용하여 서비스를 개발하거나 내부 시스템을 운영한다. 특히, 카카오는 한국 기업으로, 카카오톡을 비롯한 다양한 서비스에 파이썬을 적극적으로 활용하고 있다.

9. 실행 속도 향상 기법

파이썬은 기본적으로 인터프리터 위에서 실행되도록 설계되었지만, 실행 속도를 향상시키기 위한 다양한 기법들이 존재한다.



EuroSciPy '13에서는 비수치적(조합론적) 작업 부하에 대한 다양한 파이썬 구현의 성능 비교가 발표되었다.[116] 더 컴퓨터 랭귀지 벤치마크 게임(The Computer Language Benchmarks Game)에서도 다른 프로그래밍 언어와 비교한 파이썬의 성능을 벤치마킹한 결과를 확인할 수 있다.[117]

10. 통합 개발 환경 (IDE)

다음은 파이썬 개발에 사용되는 주요 통합 개발 환경(IDE) 목록이다.



표준 데스크톱 통합 개발 환경 외에도 과학 및 수학 관련 프로그램을 개발하기 위한 웹 브라우저 기반 IDE인 SageMath, 브라우저 기반 IDE 및 호스팅 환경인 PythonAnywhere, 과학 컴퓨팅을 강조하는 상용 IDE인 Canopy IDE가 있다.[85]

11. 비평

파이썬은 들여쓰기가 비정규적이고 자동화가 불가능하다는 비평을 받아왔다.[237] 또한, 공백의 양에 따라 코드의 의미가 달라질 수 있다. 들여쓰기에만 의존하는 것은 감지하기 어려운 논리적 버그를 유발할 수 있어 잠재적으로 위험하다.[238]

12. 빌드

파이썬은 범용 빌드 시스템 및 크로스 플랫폼 응용 소프트웨어 개발에 유용한 자원으로 활용되며, 많은 컴퓨터 엔지니어들은 파이썬의 지속적인 발전을 긍정적으로 평가하고 있다. 이는 파이썬이 여러 컴퓨터 과학 분야에서 문법의 가독성이 좋고 모듈 분리 및 재결합이 용이하여 활용 범위가 넓기 때문이다.[239][240][241]

13. 라이브러리

파이썬은 "배터리 포함(Battery Included)" 철학을 바탕으로 프로그래머가 즉시 사용할 수 있는 풍부한 표준 라이브러리를 제공한다. 이는 파이썬의 큰 강점으로 꼽힌다. 표준 라이브러리는 다음과 같은 기능을 포함한다.



표준 라이브러리의 일부는 사양에 의해 정의되지만, 대부분은 코드, 내부 문서 및 테스트 스위트로 지정된다. 대부분의 표준 라이브러리는 크로스 플랫폼 파이썬 코드이므로, 수정이나 재작성이 필요한 경우는 드물다.

또한, 서드 파티 라이브러리도 매우 풍부하다. 파이썬 패키지 인덱스(PyPI)는 타사 파이썬 소프트웨어를 위한 공식 저장소이며, 523,000개 이상의[84] 패키지를 제공한다. PyPI는 다음과 같은 광범위한 기능을 제공한다.



잘 알려진 서드파티 라이브러리로는 행렬 연산 패키지 NumPy, 이미지 처리를 위한 Pillow, SDL 래퍼인 PyGame, HTML/XML 파싱 라이브러리인 Beautiful Soup 등이 있다.

참조

[1] 웹사이트 General Python FAQ – Python 3 documentation https://docs.python.[...] 2024-07-07
[2] 웹사이트 Python 0.9.1 part 01/21 https://www.tuhs.org[...] alt.sources archives 2021-08-11
[3] 웹사이트 Why is Python a dynamic language and also a strongly typed language https://wiki.python.[...] 2021-01-27
[4] 웹사이트 PEP 483 – The Theory of Type Hints https://www.python.o[...] 2018-06-14
[5] 웹사이트 PEP 11 – CPython platform support {{!}} peps.python.org https://peps.python.[...] 2024-04-22
[6] 웹사이트 PEP 738 – Adding Android as a supported platform {{!}} peps.python.org https://peps.python.[...] 2024-05-19
[7] 웹사이트 Download Python for Other Platforms https://www.python.o[...] 2023-08-18
[8] 웹사이트 test – Regression tests package for Python – Python 3.7.13 documentation https://docs.python.[...] 2022-05-17
[9] 웹사이트 platform – Access to underlying platform's identifying data – Python 3.10.4 documentation https://docs.python.[...] 2022-05-17
[10] 웹사이트 PEP 0441 – Improving Python ZIP Application Support https://www.python.o[...] 2014-03-30
[11] 웹사이트 Starlark Language https://docs.bazel.b[...] 2019-05-25
[12] 웹사이트 Ada 83 Reference Manual (raise statement) http://archive.adaic[...] 2020-01-07
[13] 웹사이트 itertools – Functions creating iterators for efficient looping – Python 3.7.1 documentation https://docs.python.[...] 2016-11-22
[14] 웹사이트 re – Regular expression operations – Python 3.10.6 documentation https://docs.python.[...] 2022-09-06
[15] 웹사이트 CoffeeScript https://coffeescript[...] 2018-07-03
[16] 웹사이트 Perl and Python influences in JavaScript http://www.2ality.co[...] 2015-05-15
[17] 웹사이트 Chapter 3: The Nature of JavaScript; Influences http://speakingjs.co[...] 2015-05-15
[18] 웹사이트 Mojo language marries Python and MLIR for AI development https://www.infoworl[...] 2023-05-05
[19] 웹사이트 Ring and other languages http://ring-lang.sou[...] ring-lang 2017-12-04
[20] 웹사이트 Chris Lattner's Homepage http://nondot.org/sa[...] Chris Lattner 2014-06-03
[21] 웹사이트 PEP 206 – Python Advanced Library https://www.python.o[...] 2021-10-11
[22] 웹사이트 The History of Python: A Brief Timeline of Python https://python-histo[...] 2021-03-05
[23] 웹사이트 Python 2.7.18, the last release of Python 2 https://pythoninside[...] 2020-04-27
[24] 웹사이트 Stack Overflow Developer Survey 2022 https://survey.stack[...] 2022-08-12
[25] 웹사이트 The State of Developer Ecosystem in 2020 Infographic https://www.jetbrain[...] 2021-03-05
[26] 웹사이트 TIOBE Index https://www.tiobe.co[...] TIOBE 2023-01-03
[27] 웹사이트 PYPL PopularitY of Programming Language index https://pypl.github.[...] 2021-03-26
[28] 웹사이트 PEP 8100 https://www.python.o[...] Python Software Foundation 2019-05-04
[29] 웹사이트 PEP 13 – Python Language Governance https://www.python.o[...] 2021-08-25
[30] 서적 Python for kids: a playful introduction to programming No Starch Press 2013
[31] 웹사이트 PEP 373 – Python 2.7 Release Schedule https://legacy.pytho[...] 2017-01-09
[32] 웹사이트 PEP 466 – Network Security Enhancements for Python 2.7.x https://www.python.o[...] 2017-01-09
[33] 웹사이트 Sunsetting Python 2 https://www.python.o[...] 2019-09-22
[34] 웹사이트 PEP 373 – Python 2.7 Release Schedule https://www.python.o[...] 2019-09-22
[35] 웹사이트 PyPy v7.3.14 release https://www.pypy.org[...] 2024-01-05
[36] 웹사이트 Python 3.9.13 is now available https://pythoninside[...] 2022-05-21
[37] 웹사이트 Status of Python versions https://devguide.pyt[...] 2024-10-07
[38] 웹사이트 Python https://endoflife.da[...] 2024-11-20
[39] 웹사이트 CVE-2021-3177 https://access.redha[...] 2021-02-26
[40] 웹사이트 CVE-2021-3177 https://cve.mitre.or[...] 2021-02-26
[41] 웹사이트 CVE-2021-23336 https://cve.mitre.or[...] 2021-02-26
[42] 웹사이트 Built-in Types https://docs.python.[...]
[43] 웹사이트 Python 3.11 released [LWN.net] https://lwn.net/Arti[...] 2022-11-15
[44] 웹사이트 What's New In Python 3.13 https://docs.python.[...] 2024-04-30
[45] 웹사이트 PEP 667 – Consistent views of namespaces {{!}} peps.python.org https://peps.python.[...] 2024-10-07
[46] 웹사이트 Python Insider: Python 3.12.3 and 3.13.0a6 released https://pythoninside[...] 2024-04-29
[47] 웹사이트 PEP 594 – Removing dead batteries from the standard library https://peps.python.[...] Python Softtware Foundation 2019-05-20
[48] 웹사이트 Python Insider: Python 3.14.0 alpha 1 is now available https://pythoninside[...] 2024-10-16
[49] 웹사이트 PEP 749 – Implementing PEP 649 {{!}} peps.python.org https://peps.python.[...] 2024-11-20
[50] 웹사이트 PEP 711: PyBI: a standard format for distributing Python Binaries https://discuss.pyth[...] 2024-11-20
[51] 웹사이트 PEP 686 – Make UTF-8 mode default {{!}} peps.python.org https://peps.python.[...] 2024-11-20
[52] 웹사이트 Glue It All Together With Python https://www.python.o[...] 2024-09-30
[53] 웹사이트 Extending and Embedding the Python Interpreter: Reference Counts https://docs.python.[...] Docs.python.org 2020-06-05
[54] 웹사이트 Python Changes 2014+ https://learning-pyt[...] 2024-02-25
[55] 웹사이트 Confusion regarding a rule in The Zen of Python https://discuss.pyth[...] 2024-02-25
[56] 웹사이트 The Most Controversial Python Walrus Operator https://pythonsimpli[...] 2024-02-05
[57] 웹사이트 The Controversy Behind The Walrus Operator in Python https://therenegadec[...] 2024-02-25
[58] 웹사이트 Python String Formatting Best Practices https://realpython.c[...] 2024-02-25
[59] 웹사이트 15 Ways Python Is a Powerful Force on the Web https://insidetech.m[...] 2018-07-03
[60] 웹사이트 pprint – Data pretty printer – Python 3.11.0 documentation https://docs.python.[...] 2022-11-05
[61] 웹사이트 Code Style – The Hitchhiker's Guide to Python https://docs.python-[...] 2021-01-20
[62] 서적 Introduction to Computation and Programming Using Python: With Application to Understanding Data MIT Press 2016-08-12
[63] 웹사이트 PEP 8 – Style Guide for Python Code https://www.python.o[...] 2019-03-26
[64] 웹사이트 8. Errors and Exceptions – Python 3.12.0a0 documentation https://docs.python.[...] 2022-05-09
[65] 웹사이트 Highlights: Python 2.5 https://www.python.o[...] 2018-03-20
[66] 웹사이트 division https://docs.python.[...] 2014-07-30
[67] 웹사이트 PEP 0465 – A dedicated infix operator for matrix multiplication https://www.python.o[...] 2016-01-01
[68] 웹사이트 Python 3.5.1 Release and Changelog https://www.python.o[...] 2016-01-01
[69] 웹사이트 What's New in Python 3.8 https://docs.python.[...] 2019-10-14
[70] 웹사이트 4. Built-in Types – Python 3.6.3rc1 documentation https://docs.python.[...] 2017-10-01
[71] 웹사이트 5.3. Tuples and Sequences – Python 3.7.1rc2 documentation https://docs.python.[...] 2018-10-17
[72] 웹사이트 PEP 498 – Literal String Interpolation https://www.python.o[...] 2017-03-08
[73] 서적 Beyond the Basic Stuff with Python: Best Practices for Writing Clean Code https://books.google[...] No Starch Press 2021-07-07
[74] 웹사이트 PEP 484 – Type Hints {{!}} peps.python.org https://peps.python.[...] 2023-11-29
[75] 웹사이트 typing — Support for type hints https://docs.python.[...] Python Software Foundation 2023-12-22
[76] 웹사이트 mypy – Optional Static Typing for Python http://mypy-lang.org[...] 2017-01-28
[77] 웹사이트 Introduction https://mypyc.readth[...] 2023-12-22
[78] 웹사이트 15. Floating Point Arithmetic: Issues and Limitations – Python 3.8.3 documentation https://docs.python.[...] 2020-06-06
[79] 웹사이트 Built-in Types https://docs.python.[...] 2019-10-03
[80] 웹사이트 PEP 465 – A dedicated infix operator for matrix multiplication https://legacy.pytho[...] 2018-07-03
[81] 웹사이트 What's New in Python 2.6 https://docs.python.[...] 2013-10-29
[82] 웹사이트 10 Reasons Python Rocks for Research (And a Few Reasons it Doesn't) – Hoyt Koepke https://web.archive.[...] 2019-02-03
[83] 웹사이트 An introduction to Python for scientific computing https://engineering.[...] 2014-06-17
[84] 웹사이트 PyPI https://pypi.org/ 2024-03-17
[85] 웹사이트 Canopy https://web.archive.[...] 2016-08-20
[86] 웹사이트 PEP 7 – Style Guide for C Code {{!}} peps.python.org https://peps.python.[...] 2022-04-28
[87] 웹사이트 4. Building C and C++ Extensions – Python 3.9.2 documentation https://docs.python.[...] 2021-03-01
[88] 웹사이트 Changelog – Python 3.9.0 documentation https://docs.python.[...] 2021-02-08
[89] 웹사이트 Download Python https://www.python.o[...] 2020-12-13
[90] 웹사이트 history [vmspython] https://www.vmspytho[...] 2020-12-04
[91] 웹사이트 Download Python for Other Platforms https://www.python.o[...] 2020-12-04
[92] 웹사이트 Download and Install https://www.pypy.org[...] 2022-01-08
[93] 웹사이트 Codon: Differences with Python https://docs.exaloop[...] 2023-08-28
[94] 웹사이트 MIT-Created Compiler Speeds up Python Code https://thenewstack.[...] 2023-08-28
[95] 웹사이트 Python-for-EV3 https://education.le[...] 2019-04-17
[96] 뉴스 Pyston returns from the dead to speed Python https://www.infoworl[...] InfoWorld 2021-01-26
[97] 웹사이트 cinder: Instagram's performance-oriented fork of CPython. https://github.com/f[...] 2021-05-04
[98] 웹사이트 Snek Lang: feels like Python on Arduinos https://rafaelaroca.[...] 2024-01-04
[99] 웹사이트 Snekboard Controls LEGO Power Functions with CircuitPython or Snek Programming Languages (Crowdfunding) – CNX Software https://www.cnx-soft[...] 2024-01-04
[100] 웹사이트 Ready to find out if you're git famous? https://pythonbytes.[...] 2024-01-04
[101] 웹사이트 The Snek Programming Language: A Python-inspired Embedded Computing Language https://sneklang.org[...] 2024-01-04
[102] 웹사이트 Python on the Nokia N900 http://www.stochasti[...] 2015-07-09
[103] 웹사이트 Brython https://brython.info[...] 2021-01-21
[104] 웹사이트 Transcrypt – Python in the browser https://www.transcry[...] 2020-12-22
[105] 웹사이트 Transcrypt: Anatomy of a Python to JavaScript Compiler https://www.infoq.co[...] 2021-01-20
[106] 웹사이트 Transpiling Python to Julia using PyJL https://web.ist.utl.[...] 2023-09-20
[107] 웹사이트 Nuitka Home {{!}} Nuitka Home http://nuitka.net/ 2017-08-18
[108] 간행물 Pythran: enabling static optimization of scientific Python programs IOP Publishing 2015-03-16
[109] 웹사이트 The Python → 11l → C++ transpiler https://11l-lang.org[...] 2022-07-17
[110] 웹사이트 google/grumpy https://github.com/g[...] 2020-04-10
[111] 웹사이트 Projects https://opensource.g[...] 2020-03-25
[112] 뉴스 Google's Grumpy code makes Python Go https://www.theregis[...] 2021-01-20
[113] 웹사이트 GitHub – IronLanguages/ironpython3: Implementation of Python 3.x for .NET Framework that is built on top of the Dynamic Language Runtime https://github.com/I[...]
[114] 웹사이트 IronPython.net / https://ironpython.n[...]
[115] 웹사이트 Jython FAQ https://www.jython.o[...] 2021-04-22
[116] conference Performance of Python runtimes on a non-numeric scientific code
[117] 웹사이트 The Computer Language Benchmarks Game https://benchmarksga[...] 2020-04-30
[118] 웹사이트 PEP 8 – Style Guide for Python Code https://www.python.o[...] 2019-03-26
[119] 웹사이트 Moving Python's bugs to GitHub [LWN.net] https://lwn.net/Arti[...] 2022-10-02
[120] 웹사이트 Python Developer's Guide – Python Developer's Guide https://devguide.pyt[...] 2019-12-17
[121] 웹사이트 Programming languages: Why Python 4.0 might never arrive, according to its creator https://www.techrepu[...] 2021-05-24
[122] 웹사이트 PEP 602 – Annual Release Cycle for Python https://www.python.o[...] 2019-11-06
[123] 웹사이트 Changing the Python release cadence [LWN.net] https://lwn.net/Arti[...] 2019-11-06
[124] 웹사이트 1. Extending Python with C or C++ – Python 3.9.1 documentation https://docs.python.[...] 2021-02-14
[125] 웹사이트 PEP 623 – Remove wstr from Unicode https://www.python.o[...] 2021-02-14
[126] 웹사이트 PEP 634 – Structural Pattern Matching: Specification https://www.python.o[...] 2021-02-14
[127] 웹사이트 Documentation Tools https://wiki.python.[...] 2021-03-22
[128] 서적 Learning Python: Powerful Object-Oriented Programming https://books.google[...] O'Reilly Media, Inc. 2017-05-09
[129] 서적 Python https://books.google[...] Peachpit Press 2017-05-09
[130] 서적 Introducing Python http://archive.org/d[...] Sebastopol, CA : O'Reilly Media 2023-07-31
[131] 웹사이트 TIOBE Index for January 2021 https://seniordba.wo[...] 2021-01-18
[132] 웹사이트 Tornado: Facebook's Real-Time Web Framework for Python – Facebook for Developers https://developers.f[...] 2018-06-19
[133] 웹사이트 What Powers Instagram: Hundreds of Instances, Dozens of Technologies https://instagram-en[...] Instagram Engineering 2016-12-11
[134] 웹사이트 How we use Python at Spotify https://labs.spotify[...] 2013-03-20
[135] 웹사이트 GitHub – reddit-archive/reddit: historical code from reddit.com. https://github.com/r[...] The Reddit Archives 2019-03-20
[136] 웹사이트 Real time communication at scale with Elixir at Discord https://elixir-lang.[...] 2020-10-08
[137] 웹사이트 What Programming Language is Baidu Built In? https://www.freelanc[...] 2018-07-05
[138] 간행물 Python for Scientific Computing https://www.h2desk.c[...] 2015-04-10
[139] 간행물 Python for Scientists and Engineers http://www.computer.[...] 2014-07-07
[140] 웹사이트 Science education with SageMath http://visual.icse.u[...] Innovative Computing in Science Education 2019-04-22
[141] 웹사이트 OpenCV: OpenCV-Python Tutorials https://docs.opencv.[...] 2020-09-14
[142] 웹사이트 TensorFlow: Large-scale machine learning on heterogeneous systems http://download.tens[...] Google Research 2015-11-10
[143] 웹사이트 Python eats away at R: Top Software for Analytics, Data Science, Machine Learning in 2018: Trends and Analysis https://www.kdnugget[...] 2018-05-30
[144] 웹사이트 Who is using scikit-learn? – scikit-learn 0.20.1 documentation https://scikit-learn[...] 2018-11-30
[145] 웹사이트 Google supercharges machine learning tasks with TPU custom chip https://cloudplatfor[...] 2016-05-19
[146] 간행물 Probabilistic (logic) programming concepts 2015
[147] 서적 The Janus System: a bridge to new prolog applications Springer Nature Switzerland 2023
[148] 웹사이트 SWI-Prolog Python interface https://www.swi-prol[...] 2024-03-15
[149] 서적 Reflections on automation, learnability and expressiveness in logic-based programming languages Springer Nature Switzerland 2023
[150] 웹사이트 Tkinter — Python interface to TCL/Tk https://docs.python.[...] 2023-06-09
[151] 웹사이트 Python Tkinter Tutorial https://www.geeksfor[...] 2023-06-09
[152] 웹사이트 Installers for GIMP for Windows – Frequently Asked Questions https://web.archive.[...] 2013-07-26
[153] 웹사이트 Python Setup and Usage https://docs.python.[...] Python Software Foundation 2020-01-10
[154] 웹사이트 4.0 New Features and Fixes http://www.libreoffi[...] The Document Foundation 2013-02-25
[155] 웹사이트 Frequently asked questions https://docs.godoten[...] 2021-05-10
[156] 웹사이트 Why We Created Julia https://julialang.or[...] 2014-06-05
[157] 웹사이트 Modular Docs – Why Mojo https://docs.modular[...] 2023-05-05
[158] 웹사이트 What is Mojo Programming Language? https://datasciencel[...] 2023-05-05
[159] 웹사이트 Nim language draws from best of Python, Rust, Go, and Lisp https://www.infoworl[...] 2020-06-07
[160] 웹사이트 Chris Lattner's Homepage http://nondot.org/sa[...] Chris Lattner 2014-06-03
[161] 웹사이트 Programming in Kotlin https://medium.com/c[...] 2024-04-29
[162] 웹사이트 Swift Evolution Process https://github.com/a[...] 2020-04-27
[163] 문서 Chapter 3. The Nature of JavaScript http://speakingjs.co[...]
[164] 웹사이트 Welcome to Python.org https://www.python.o[...] 2020-08-10
[165] 웹사이트 History and License https://docs.python.[...] 2016-12-05
[166] 문서 TIMTOWTDI
[167] 웹사이트 Design and History FAQ — Python 3.9.6 documentation https://docs.python.[...] 2021-08-26
[168] 문서 typing --- 型ヒントのサポート — Python 3.10.0b2 ドキュメント https://docs.python.[...]
[169] 문서 A mapping object maps hashable values to arbitrary objects. https://docs.python.[...] 2023-03-01
[170] 문서 PEP 3120 -- Using UTF-8 as the default source encoding | Python.org https://www.python.o[...]
[171] 문서 PEP 538 -- Coercing the legacy C locale to a UTF-8 based locale | Python.org https://www.python.o[...]
[172] 문서 PEP 540 -- Add a new UTF-8 Mode | Python.org https://www.python.o[...]
[173] Github pyodide/pyodide: Python with the scientific stack, compiled to WebAssembly. https://github.com/i[...]
[174] Github exaloop/Codon https://github.com/e[...]
[175] 뉴스 "Python-based compiler achieves orders-of-magnitude speedups" MIT News 2023-03-14
[176] 뉴스 MIT Turbocharges Python’s Notoriously Slow Compiler > Codon lets users run Python code as efficiently as C or C++ https://spectrum.iee[...] IEEE Spectrum 2023-03-30
[177] 논문 "PyOMP: Multithreaded Parallel Programming in Python," in Computing in Science & Engineering, vol. 23, no. 6, pp. 77-80, 1 Nov.-Dec. 2021, doi: 10.1109/MCSE.2021.3128806. 2021-11-01
[178] Youtube PyOMP: Parallel multithreading that is fast AND Pythonic. Presented by Tim Mattson (Intel) https://www.youtube.[...]
[179] 문서 PEP 427 -- The Wheel Binary Package Format 1.0 https://www.python.o[...]
[180] 웹사이트 Python for S60 http://forum.nokia.c[...] 2007-01-17
[181] 웹사이트 KEKB: An Asymmetric Electron-Positron Collider for B-Factory in KEK http://www-acc.kek.j[...] 2007-01-17
[182] 웹사이트 Python for Scientists and Engineers http://www.computer.[...] 2015-08-09
[183] 간행물 プレス発表 基本情報技術者試験における出題を見直し:IPA 独立行政法人 情報処理推進機構 https://www.ipa.go.j[...]
[184] 문서 高等学校情報科「情報Ⅰ」教員研修用教材(本編) https://www.mext.go.[...]
[185] 웹사이트 Pythonとは?主な特徴や子どもに習得させるメリットを知っておこう https://www.hallo.jp[...] 2023-06-02
[186] 웹사이트 Foundations of Sports Analytics: Data, Representation, and Models in Sports https://www.coursera[...] 2022-02-02
[187] 웹사이트 Moneyball and Beyond https://www.coursera[...] 2022-02-02
[188] 웹사이트 Prediction Models with Sports Data https://www.coursera[...] 2022-02-02
[189] 웹사이트 Moneyball and Beyond https://www.coursera[...] 2022-02-02
[190] 웹사이트 Prediction Models with Sports Data https://www.coursera[...] 2022-02-02
[191] 웹사이트 Moneyball and Beyond https://www.coursera[...] 2022-02-02
[192] 웹사이트 Prediction Models with Sports Data https://www.coursera[...] 2022-02-02
[193] 웹사이트 Wearable Technologies and Sports Analytics https://www.coursera[...] 2022-02-02
[194] 웹사이트 Introduction to Machine Learning in Sports Analytics https://www.coursera[...] 2022-02-02
[195] 웹사이트 Pythonのsubprocessモジュールの使い方|子プロセスの起動方法からわかりやすく解説 https://www.fenet.jp[...] 2021-03-25
[196] 웹사이트 Python 2 から Python 3 への移植 http://docs.python.j[...] Python Software Foundation 2014-03-13
[197] 문서 PEP 373 -- Python 2.7 Release Schedule | Python.org https://www.python.o[...]
[198] 문서 Python 2.7.18はPython 2.7の最後のリリースであり、したがってPython 2の最後のリリースである
[199] 웹사이트 Python Insider: Python 2.7.18, the last release of Python 2 https://pythoninside[...] 2020-04-20
[200] 웹사이트 Sunsetting Python 2 https://www.python.o[...] 2019-09-22
[201] 웹사이트 Python Documentation by Version http://www.python.or[...] Python Software Foundation 2014-03-20
[202] 웹사이트 【入門者必見】Python2と3、どっちを学習すべき?違いを徹底解説! http://www.sejuku.ne[...] 株式会社 侍 2016-09-21
[203] 웹사이트 Python Developers Survey 2017 - Results https://www.jetbrain[...]
[204] 웹사이트 By the numbers: Python community trends in 2017/2018 | Opensource.com https://opensource.c[...]
[205] 웹사이트 【Changes/Python 3 as Default https://fedoraprojec[...] Fedora Project 2016-09-21
[206] 웹사이트 Ja https://wiki.ubuntu.[...] Ubuntu.com 2016-09-21
[207] 웹사이트 Red Hat Enterprise Linux 7 Chapter 53. Deprecated Functionality - Red Hat Customer Portal https://access.redha[...]
[208] 웹사이트 17. Development Cycle — Python Developer's Guide https://devguide.pyt[...]
[209] 웹사이트 登場! Python 3.0 - 2系との違いを比較 https://news.mynavi.[...] マイナビ 2009-01-01
[210] 웹사이트 「Python 3.1」正式版リリース http://sourceforge.j[...] OSDN Corporation 2009-07-01
[211] 웹사이트 Python 3.1リリース http://slashdot.jp/s[...] OSDN Corporation 2009-06-30
[212] 웹사이트 Python 3.2リリース http://developers.sl[...] OSDN Corporation 2011-02-22
[213] 웹사이트 仕様変更凍結が解除され新機能が追加された「Python 3.3」、ついにリリース http://sourceforge.j[...] SourceForge.JP 2012-10-01
[214] 웹사이트 Python 3.4登場 https://news.mynavi.[...] マイナビニュース 2014-03-18
[215] 웹사이트 「Python 3.4」リリース、標準ライブラリを強化 http://sourceforge.j[...] SourceForge.JP 2014-03-18
[216] 웹사이트 Python 3.5.0登場 https://news.mynavi.[...] マイナビニュース 2015-09-13
[217] 웹사이트 「Python 3.5」正式版がリリース – 新機能が多数追加 http://www.softanten[...] ソフトアンテナブログ 2015-09-14
[218] 웹사이트 「Python 3.6」がリリース https://mag.osdn.jp/[...] OSDN 2016-12-26
[219] 웹사이트 「Python 3.7」リリース、型アノーテーションの強化などさまざまな機能が追加される https://mag.osdn.jp/[...] OSDN 2018-06-29
[220] 문서 What's New In Python 3.7 — Python 3.7.5 ドキュメント https://docs.python.[...]
[221] 문서 What's New In Python 3.8 — Python 3.8.0 ドキュメント https://docs.python.[...]
[222] 문서 What's New In Python 3.9 — Python 3.9.12 ドキュメント https://docs.python.[...]
[223] 문서 What's New In Python 3.10 — Python 3.10.4 ドキュメント https://docs.python.[...]
[224] 웹사이트 What's New In Python 3.11 https://docs.python.[...] 2024-04-23
[225] 웹사이트 What's New In Python 3.12 https://docs.python.[...] 2024-04-23
[226] 문서 Why is it called Python? https://docs.python.[...] Python Software Foundation
[227] 서적 ソースコードの反逆 株式会社アスキー 2002-06-11
[228] 문서 외래어 표기법에 따르면 Python은 영어를 기준으로 할 때 한글로 '파이선'으로 적어야 하나, 정식으로 채택된 한글 표기는 '''파이썬'''이다.
[229] 웹인용 「Python History」, Python Foundation http://svn.python.or[...] 2008-01-14
[230] 문서 한국어 표기에 대해서는 [[귀도 반 로섬#표기]] 참고
[231] 문서 TIOBE 프로그래밍 커뮤니티 인덱스 TIOBE Programming Community Index (Monthly) http://www.tiobe.com[...]
[232] 웹인용 Update Python 2.7 EOL date #344 https://github.com/p[...]
[233] 웹인용 Python 2.7 Countdown https://pythonclock.[...]
[234] 웹인용 Python2orPython3 - Python Wiki https://wiki.python.[...] 2018-01-04
[235] 웹인용 What’s New In Python 3.0 — Python 3.6.4 documentation https://docs.python.[...] 2018-01-04
[236] 웹인용 PEP 20 -- The Zen of Python https://www.python.o[...] 2018-01-04
[237] 웹인용 Syntax Design: Python's Indentation vs Nesting http://xahlee.info/c[...] 2015-11-18
[238] 웹인용 How Coding in Python Might Be Bad For You http://lenkaspace.ne[...] lenkaspace.net 2016-10-04
[239] 참고 The Incredible Growth of Python https://stackoverflo[...] David Robinson 2017-09-06
[240] 참고 PEP 453 -- Explicit bootstrapping of pip in Python installations https://www.python.o[...]
[241] 참고 PEP 518 -- Specifying Minimum Build System Requirements for Python Projects https://www.python.o[...]

관련 사건 타임라인

( 최근 20개의 뉴스만 표기 됩니다. )



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com