파이썬(프로그래밍 언어)
Python (programming language)패러다임 | 다중 패러다임: 객체 지향적,[1] 절차적(임피러티브), 기능적, 구조적, 반사적 |
---|---|
설계자 | 귀도 반 로섬 |
개발자 | 파이썬 소프트웨어 재단 |
처음 등장했습니다. | 1991년 2월 20일,[2] |
안정적 방출 | 3.12.2 / 2024년 2월 7일, 전 |
타이핑 종목 | Duck, Dynamic, Strong Typing;[3] 옵션 유형 주석(3.5 이후), 그러나 이러한 힌트는 비공식 도구를 제외하고는 무시됨)[4] |
OS | Windows, macOS, Linux/UNIX, Android, Unix 유사 시스템, BSD 변형[5][6] 및 기타 플랫폼[7] |
면허증. | Python Software Foundation 라이선스 |
파일 이름 확장자 | .py, .pyw, .pyz, [8] .pyi, .pyc, .pyd |
웹사이트 | python.org |
주요 구현 | |
CPython, PyPy, Stackless Python, MicroPython, Circuit파이썬, 아이언파이썬, 자이썬 | |
방언 | |
Cython, RPython, Starlark[9] | |
에 의해 영향을 받았습니다. | |
ABC,[10]Ada,[11]ALGOL 68,[12] APL,[13]C,[14]C++,[15]CLU,[16]Dylan,[17] Haskell,[18][13]Icon,[19]Lisp,[20] Modula-3,[12][15]Perl,[21]Standard ML[13] | |
영향받은 | |
Apache Groovy, Boo, Cobra, CoffeeScript,[22] D, F#, GDScript, Genie,[23] Go, JavaScript,[24][25] Julia,[26] Mojo,[27] Nim, Ring,[28] Ruby,[29] Swift[30] | |
|
파이썬은 높은 수준의 범용 프로그래밍 언어입니다. 디자인 철학은 상당한 압흔을 사용하여 코드 가독성을 강조합니다.[31]
파이썬은 동적으로 타이핑되고 쓰레기 수집됩니다. 구조화(특히 절차적), 객체 지향 및 기능적 프로그래밍을 포함한 여러 프로그래밍 패러다임을 지원합니다. 포괄적인 표준 라이브러리로 인해 종종 "배터리 포함" 언어로 설명됩니다.[32][33]
Guido van Rossum은 ABC 프로그래밍 언어의 후속으로 1980년대 후반에 Python 작업을 시작했으며 1991년에 Python 0.9.0으로 처음 출시했습니다.[34] Python 2.0은 2000년에 출시되었습니다. 2008년에 출시된 Python 3.0은 이전 버전과 완전히 호환되지 않는 주요 개정판이었습니다. 2020년에 출시된 Python 2.7.18이 Python 2의 마지막 출시였습니다.[35]
파이썬은 가장 인기 있는 프로그래밍 언어 중 하나로 꾸준히 순위를 매기고 있으며, 머신 러닝 커뮤니티에서 널리 사용되고 있습니다.[36][37][38][39]
역사
파이썬은 1980년대[40] 후반 네덜란드의 CWI(Centrum Wiskunde & Informatica)의 Guido van Rossum(귀도 반 로섬)이 아메바 운영 체제를 예외 처리하고 인터페이스할 수 [41]있는 SETL에서 영감을 얻은 ABC 프로그래밍 언어의 후속 언어로 구상했습니다.[10] 그 시행은 1989년 12월에 시작되었습니다.[42] 반 로섬은 2018년 7월 12일 파이썬의 "생명을 위한 유익한 독재자"로서의 책임에서 "영구 휴가"를 발표할 때까지 프로젝트에 대한 단독 책임을 지었습니다. 이 타이틀은 파이썬 커뮤니티가 프로젝트의 최고 의사 결정자로서의 장기적인 헌신을 반영하기 위해 부여한 것입니다.[43] 2019년 1월, 적극적인 파이썬 코어 개발자들은 프로젝트를 이끌 5명으로 구성된 운영 위원회를 선출했습니다.[44][45]
파이썬 2.0은 2000년 10월 16일에 출시되었으며 목록 이해, 주기 감지 가비지 컬렉션, 참조 계수 및 유니코드 지원과 같은 많은 주요 새로운 기능이 있습니다.[46] 2008년 12월 3일에 출시된 Python 3.0은 주요 기능 중 많은 부분이 Python 2.6.x와[47] 2.7.x로 다시 보고되었습니다. Python 3의 릴리스에는 다음과 같은 것들이 있습니다. 2to3
Python 2 코드를 Python 3으로 변환하는 것을 자동화하는 유틸리티입니다.[48]
Python 2.7의 종료 시점은 처음에 2015년으로 설정되었다가, 기존 코드의 많은 부분이 Python 3로 쉽게 포워딩될 수 없다는 우려로 2020년으로 연기되었습니다.[49][50] 더 이상의 보안 패치나 기타 개선 사항은 출시되지 않습니다.[51][52] 현재 3.8 이상만 지원됩니다(예: 3.7.17, 최종 3.7.x 릴리스에서[53] 보안 문제가 수정되었습니다). Python 2.7 이상은 공식적으로 지원되지 않지만, 다른 비공식적인 PyPy는 Python 2, 즉 "2.7.18+"(플러스 3.9 및 3.10)를 계속해서 지원하며, 플러스(최소 일부)는 "백포트된 보안 업데이트"를 의미합니다.[54]
2021년에(그리고 2022년에 다시 두 번) 보안 업데이트가 가속화되었는데, 이는 원격 코드 실행[56] 및 웹 캐시 중독으로 이어질 수 있는 보안 문제로 인해 모든 Python 버전이[55] 안전하지 않았기 때문입니다.[57] 2022년 Python 3.10.4 및 3.9.12는 많은 보안 문제로 인해[58] 신속화되었으며 3.8.13입니다.[59] 2022년 5월 Python 3.9.13이 출시되었을 때 3.9 시리즈(이전 시리즈 3.8 및 3.7에 가입)는 향후 보안 수정만 받을 것이라고 발표되었습니다.[60] 2022년 9월 7일 잠재적인 서비스 거부 공격으로 인해 3.10.7, 3.9.14, 3.8.14 및 3.7.14의 4가지 새로운 릴리스가 제공되었습니다.[61][62]
2023년 10월 현재 [update]Python 3.12는 안정적인 릴리스이며, 3.12와 3.11은 (단순히 보안이 아닌) 활성화된 유일한 버전입니다. 3.10에서 3.11로 눈에 띄는 변화는 프로그램 실행 속도 향상, 오류 보고 개선 등입니다.[63]
Python 3.12는 구문을 언어에 추가합니다. (그리고 사실 모든 Python은 적어도 3.5는 구문을 추가하기 때문에) 새로운 (소프트) 키워드입니다. type
(recent 릴리스에는 3.10의 새로운 유형의 조합 운영자와 같은 많은 타이핑 지원이 추가되었습니다.) 및 예외 처리를 위한 3.11 및 3.10. match
그리고. case
(소프트) 키워드, 구조 패턴 일치 문에 대한 키워드입니다. 또한 Python 3.12는 오래된 모듈과 기능을 삭제하며, 향후 버전도 개발 섹션의 아래를 참조하십시오.
Python 3.11은 Python 3.10보다 10~60% 빠르며, Python 3.12는 여기에 5%를 더 추가합니다. 또한 향상된 오류 메시지 및 기타 많은 변경 사항이 있습니다.
2023년[update] 6월 27일부터 파이썬 3.8은 파이썬 3.7이 수명을 다함에 따라 가장 오래된 파이썬의 지원 버전입니다.[64]
디자인 철학 및 특징
파이썬은 다중 패러다임 프로그래밍 언어입니다. 객체 지향 프로그래밍과 구조화된 프로그래밍이 전적으로 지원되며, 기능적 프로그래밍과 측면 지향 프로그래밍(메타프로그래밍[65] 및 메타 객체 포함)을 지원하는 기능이 많습니다.[66] 계약에[67][68] 의한 설계와 논리 프로그래밍을 포함한 많은 다른 패러다임이 확장을 통해 지원됩니다.[69]
파이썬은 메모리 관리를 위해 동적 타이핑과 참조 카운트 및 주기 감지 가비지 수집기의 조합을 사용합니다.[70] 프로그램 실행 중 메서드 및 변수 이름을 바인딩하는 동적 이름 해결(레이트 바인딩)을 사용합니다.
이 제품의 디자인은 리스프 전통의 기능적 프로그래밍을 지원합니다. 정말 그랬어요. filter
,map
그리고.reduce
함수; 목록 포괄, 사전, 집합 및 생성기 식을 나열합니다.[71] 표준 라이브러리에는 두 개의 모듈이 있습니다.itertools
그리고. functools
) Haskell 및 Standard ML에서 차용한 기능 툴을 구현하는 것입니다.[72]
그 핵심 철학은 파이썬의 선(PEP 20)에 요약되어 있으며,[73] 다음과 같은 표현이 포함되어 있습니다.
- 아름다운 것이 못생긴 것보다 낫습니다.
- 명시적인 것이 암시적인 것보다 낫습니다.
- 복잡함보다 단순함이 더 좋습니다.
- 복잡함보다는 복잡함이 낫습니다.
- 가독성이 중요합니다.
그러나 파이썬 기능은 정기적으로 이러한 원칙을 위반하고 불필요한 언어의 비대함을 추가하여 비판을 받았습니다.[74][75] 이러한 비판에 대한 반응은 파이썬의 선이 규칙이라기보다는 지침이라는 것입니다.[76] Python 3.8에서 할당 표현 연산자를 추가한 것에 대해 독설이 난 후 Guido van Rossum이 생명을 위한 자비로운 독재자에서 사임할 정도로 새로운 기능들이 논란이 되어 왔습니다.[77][78]
그럼에도 불구하고 Python은 모든 기능을 핵심으로 구축하는 대신 모듈을 통해 확장성이 높도록 설계되었습니다. 이 소형 모듈식은 기존 애플리케이션에 프로그래밍 가능한 인터페이스를 추가하는 수단으로 특히 인기를 끌었습니다. 큰 표준 라이브러리와 쉽게 확장 가능한 통역사를 갖춘 작은 핵심 언어에 대한 반 로섬의 비전은 반대의 접근 방식을 지지하는 ABC에 대한 그의 좌절에서 비롯되었습니다.[40]
Python은 개발자들에게 코딩 방법론에 대한 선택권을 주면서 더 단순하고 덜 뭉친 구문과 문법을 위해 노력한다고 주장합니다. Python은 Perl의 "하나 이상의 방법이 있다"는 모토와는 달리 "하나 이상의 방법이 있어야 하며, 가급적 하나만 있어야 한다"는 철학을 담고 있습니다.[73] 그러나 실제로 Python은 동일한 작업을 달성할 수 있는 많은 방법을 제공합니다. 예를 들어, 프로그래머가 사용해야 할 문자열 리터럴을 포맷하는 방법은 적어도 세 가지가 있습니다.[79] Python Software Foundation의 연구원이자 Python 책 저자인 Alex Martelli는 다음과 같이 썼습니다: "어떤 것을 '똑똑하다'고 묘사하는 것은 Python 문화에서 칭찬으로 간주되지 않습니다."[80]
Python의 개발자는 일반적으로 조기 최적화를 피하기 위해 노력하고 명확성을 희생하면서 속도를 약간 높일 수 있는 CPython 참조 구현의 중요하지 않은 부분에 대한 패치를 거부합니다.[81] 실행 속도는 C와 같은 언어로 작성된 확장 모듈로 속도에 중요한 기능을 이동하거나 PyPy와 같은 Just-in-time 컴파일러를 사용하여 향상시킬 수 있습니다. 다른 언어로 교차 컴파일하는 것도 가능하지만, 파이썬이 매우 역동적인 언어이거나 파이썬의 제한된 하위 집합이 컴파일되고 의미론이 약간 변경될 수 있기 때문에 기대할 수 있는 전체 속도 향상을 제공하지 못합니다.[82]
파이썬의 개발자들은 파이썬이 사용하기에 재미있는 것을 목표로 합니다. 이것은 영국 코미디 그룹 몬티 파이썬에[83] 대한 헌사인 이름과 자주 사용되는 "푸"와 "바" 대신 예를 들어 "스팸"과 "계란"(몬티 파이썬 스케치의 참조)이라는 용어를 사용하는 것과 같은 튜토리얼 및 참고 자료에 대한 가끔 장난스러운 접근 방식에 반영됩니다.[84][85]파이썬 커뮤니티에서 흔히 볼 수 있는 신조어는 파이썬으로 프로그램 스타일과 관련된 광범위한 의미를 가지고 있습니다. "파이썬" 코드는 파이썬 관용구를 잘 사용할 수도 있고, 자연스럽거나 언어에 유창함을 보일 수도 있고, 파이썬의 미니멀리즘 철학과 가독성에 대한 강조에 부합할 수도 있습니다. 이해하기 어렵거나 다른 프로그래밍 언어의 대략적인 전사처럼 읽히는 코드를 언피토닉이라고 합니다.[86][87]
구문 및 의미론
파이썬은 쉽게 읽을 수 있는 언어로 되어 있습니다. 그 형식은 시각적으로 가지런하지 않으며 다른 언어가 구두점을 사용하는 영어 키워드를 사용하는 경우가 많습니다. 다른 많은 언어와 달리 블록을 구분하기 위해 곱슬곱슬한 괄호를 사용하지 않으며 문 뒤에 세미콜론이 허용되지만 거의 사용되지 않습니다. C나 파스칼보다 통사적 예외와 특수한 경우가 적습니다.[88]
움푹 들어간 곳
Python은 블록을 구분하기 위해 곱슬곱슬한 괄호나 키워드가 아닌 공백 들여쓰기를 사용합니다. 움푹 들어간 부분의 증가는 특정 문장 뒤에 나타납니다. 움푹 들어간 부분의 감소는 현재 블록의 끝을 나타냅니다.[89] 따라서 프로그램의 시각적 구조는 의미적 구조를 정확하게 나타냅니다.[90] 이 기능을 오프사이드 규칙이라고 부르기도 합니다. 일부 다른 언어들은 들여쓰기를 이런 식으로 사용하지만, 대부분의 언어에서 들여쓰기는 의미적인 의미가 없습니다. 권장 들여쓰기 크기는 4칸입니다.[91]
전표 및 제어 흐름
파이썬의 진술은 다음과 같습니다.
- 할당 문, 단일 등호 사용
=
- 그
if
조건부로 코드 블록을 실행하는 명령문입니다.else
그리고.elif
(다른 경우의 수축) - 그
for
반복 가능한 개체 위에서 반복되는 문으로, 각 요소를 로컬 변수에 캡처하여 연결된 블록에서 사용합니다. - 그
while
조건이 참인 한 코드 블록을 실행하는 문 - 그
try
첨부된 코드 블록에서 제기된 예외를 잡아 처리할 수 있도록 하는 문except
절(또는 새로운 구문)except*
예외 그룹의[92] 경우 Python 3.11에서); 또한 정리 코드가finally
블록이 나가는 방법에 관계없이 항상 실행됩니다. - 그
raise
지정된 예외를 올리거나 탐지된 예외를 다시 raise하는 데 사용되는 문 - 그
class
개체 지향 프로그래밍에서 사용하기 위해 코드 블록을 실행하고 로컬 네임스페이스를 클래스에 첨부하는 문 - 그
def
함수 또는 방법을 정의하는 문 - 그
with
코드 블록을 컨텍스트 관리자 내에 둘러싸는 문(예: 실행하기 전에 잠금을 획득한 다음 잠금을 해제하거나 파일을 열고 닫음), RAII(Resource Acquisition-is-initialization)와 같은 동작을 허용하고 일반적인 시도/최종 관용구를[93] 대체합니다. - 그
break
루프를 빠져나가는 문 - 그
continue
현재 반복의 나머지 부분을 건너뛰고 다음으로 계속하는 문 - 그
del
변수를 제거하는 문 - 이름에서 값으로 참조를 deleting하고 변수가 재정의되기 전에 참조되면 오류를 생성합니다. - 그
pass
NOP 역할을 하는 문, 빈 코드 블록을 만드는 데 구문적으로 필요합니다. - 그
assert
적용해야 하는 조건을 확인하기 위해 디버깅에 사용되는 문 - 그
yield
생성자 함수(및 연산자)에서 값을 반환하는 문; 코루틴을 구현하는 데 사용됩니다. - 그
return
함수에서 값을 반환하는 데 사용되는 문 - 그
import
그리고.from
함수 또는 변수를 현재 프로그램에서 사용할 수 있는 모듈을 가져오는 데 사용되는 문
할당문(=
)는 동적으로 할당된 별도의 개체에 대한 참조로 이름을 바인딩합니다. 변수는 이후에 임의의 객체에 대해 언제든지 반등할 수 있습니다. Python에서 변수 이름은 고정된 데이터 유형이 없는 일반 참조 홀더이지만 항상 유형이 있는 일부 개체를 나타냅니다. 이것은 정적 유형 언어와 달리 동적 유형이라고 하며, 각 변수에는 특정 유형의 값만 포함될 수 있습니다.
Python은 테일 콜 최적화나 퍼스트 클래스 연속을 지원하지 않으며 Van Rossum에 따르면 결코 지원하지 않을 것입니다.[94][95] 그러나 파이썬의 생성기를 확장하면 코루틴과 유사한 기능을 더 잘 지원할 수 있습니다.[96] 2.5 이전에는 발전기가 게으른 반복기였습니다. 데이터는 발전기 밖으로 단방향으로 전달되었습니다. Python 2.5부터는 생성기 함수에 데이터를 다시 전달할 수 있고, 버전 3.3부터는 여러 스택 레벨을 통해 전달할 수 있습니다.[97]
표현.
파이썬의 표현은 다음과 같습니다.
- 그
+
,-
,그리고.*
수학적 덧셈, 뺄셈, 곱셈의 연산자는 다른 언어와 비슷하지만 나눗셈의 행동은 다릅니다. 파이썬에는 바닥 분할(또는 정수 분할)이라는 두 가지 유형의 분할이 있습니다.//
부동소수점/
나눗셈[98] Python은 다음을 사용합니다.**
지수화에 대한 연산자입니다. - Python은 다음을 사용합니다.
+
문자열 연결에 대한 연산자입니다. Python은 다음을 사용합니다.*
지정된 횟수만큼 문자열을 복제하는 연산자입니다. - 그
@
핀픽스 연산자 행렬 곱셈을 위해 NumPy와 같은 라이브러리에서 사용하기 위한 것입니다.[99][100] - 구문.
:=
, "walrus 연산자"라고 불리는 것은 Python 3.8에서 소개되었습니다. 더 큰 식의 일부로 변수에 값을 할당합니다.[101] - 파이썬에서는.
==
값으로 비교합니다. 파이썬의is
개체 ID를 비교하는 데 연산자를 사용할 수 있으며(참조에 의한 compar 비교), 비교를 체인화할 수 있습니다. 예를 들어,a <= b <= c
. - 파이썬 사용법
and
,or
,그리고.not
부울 연산자로. - Python에는 목록 이해라는 표현과 생성자 표현이라는 보다 일반적인 표현이 있습니다.[71]
- 익명 함수는 lambda 식을 사용하여 구현되지만 각 본문에는 식이 하나만 있을 수 있습니다.
- 조건식은 다음과 같이 표기됩니다.
x if c else y
[102] (피연산자의 순서가 다른 경우)c ? x : y
다른 많은 언어에 공통적인 연산자). - 파이썬은 목록과 튜플을 구분합니다. 목록은 다음과 같이 작성됩니다.
[1, 2, 3]
, 변경할 수 있으며 사전 키로 사용할 수 없습니다(사전 키는 Python에서 변경할 수 없습니다). 투플스, 다음과 같이 쓰임(1, 2, 3)
, 튜플의 모든 요소가 불변인 경우 사전의 키로 사용할 수 있습니다. 그+
연산자를 사용하여 두 개의 튜플을 연결할 수 있으며, 이 튜플은 내용을 직접 수정하지 않지만 두 튜플의 요소를 모두 포함하는 새 튜플을 생성합니다. 따라서 변수가 주어지면t
처음에는 와 같음(1, 2, 3)
, 실행중인t = t + (4, 5)
제1차 평가t + (4, 5)
, 을 산출하는(1, 2, 3, 4, 5)
, 그런 다음 다시 할당됩니다.t
—thereby는 효과적으로 "내용을 modifying"합니다.t
튜플 객체의 불변성을 준수하면서. 괄호는 모호하지 않은 컨텍스트의 튜플에 대해 선택적입니다.[103] - Python은 여러 개의 표현식이 (변수, 쓰기 가능한 속성 등에) 할당할 수 있는 모든 것에 동일한 방식으로 각각 평가되는 시퀀스 언팩을 특징으로 하며, 전체적으로 할당 문에서 등호 왼쪽에 배치됩니다. 이 문장은 등호의 오른쪽에 반복 가능한 개체를 기대하며, 이 개체를 통해 반복하면 생성된 각 값을 왼쪽의 해당 식에 할당합니다.[104]
- Python에는 "string format" 연산자가 있습니다.
%
와 유사한 기능을 하는printf
예를 들어, 문자열을 C로 포맷합니다."spam=%s eggs=%d" % ("blah", 2)
로 평가합니다."spam=blah eggs=2"
. Python 2.6+ 및 3+에서는 다음과 같이 보완되었습니다.format()
의 방법str
예를 들면, 계급"spam={0} eggs={1}".format("blah", 2)
. 파이썬 3.6은 "f-strings"를 추가했습니다.spam = "blah"; eggs = 2; f'spam={spam} eggs={eggs}'
.[105] - 파이썬의 문자열은 정수와 플로트를 추가하는 것과 같은 연산자를 사용하여 "추가"함으로써 연결할 수 있습니다.
"spam" + "eggs"
돌아온다"spameggs"
. 문자열에 숫자가 포함된 경우 정수가 아닌 문자열로 추가됩니다."2" + "2"
돌아온다"22"
. - 파이썬에는 다양한 문자열 리터럴이 있습니다.
- 단일 따옴표 또는 이중 따옴표로 구분됩니다. 유닉스 셸, 펄 및 펄의 영향을 받는 언어와는 달리 단일 따옴표와 이중 따옴표는 동일하게 작동합니다. 둘 다 백슬래시(backslash)를 사용합니다.
\
) 탈출 캐릭터로. 문자열 보간은 파이썬 3.6에서 "포맷된 문자열 리터럴"로 사용할 수 있게 되었습니다.[105] - 세 개의 따옴표(단문 또는 이중 따옴표 3개로 시작 및 끝)가 여러 줄에 걸쳐 있으며 셸, 펄 및 루비의 문서처럼 기능할 수 있습니다.
- 문자열 리터럴을 다음으로 접두사로 붙여 표시되는 원시 문자열 품종
r
. 이스케이프 시퀀스는 해석되지 않으므로 원시 문자열은 정규 표현식이나 윈도우 스타일 경로와 같이 리터럴 백슬래시가 일반적인 경우에 유용합니다. (비교"@
C#의 "인용".)
- 단일 따옴표 또는 이중 따옴표로 구분됩니다. 유닉스 셸, 펄 및 펄의 영향을 받는 언어와는 달리 단일 따옴표와 이중 따옴표는 동일하게 작동합니다. 둘 다 백슬래시(backslash)를 사용합니다.
- Python은 다음과 같이 표시되는 목록에 배열 인덱스 및 배열 슬라이싱 식을 포함합니다.
a[key]
,a[start:stop]
또는a[start:stop:step]
. 인덱스는 제로 기반이고 마이너스 인덱스는 끝에 상대적입니다. 슬라이스는 시작 인덱스에서 중지 인덱스를 포함하지만 포함하지 않는 요소를 가져옵니다. step 또는 stried라고 하는 세 번째 슬라이스 매개변수를 사용하면 요소를 건너뛰고 되돌릴 수 있습니다. 슬라이스 인덱스는 생략될 수 있습니다(예:a[:]
전체 목록의 복사본을 반환합니다. 슬라이스의 각 요소는 얕은 복사본입니다.
Python에서는 Common Lisp, Scheme 또는 Ruby와 같은 언어와 달리 표현과 문장의 구분이 엄격하게 적용됩니다. 이로 인해 일부 기능이 중복됩니다. 예:
- 이해 목록 vs.
for
- loops - 조건식 vs.
if
블록 - 그
eval()
대.exec()
내장 함수(파이썬 2에서)exec
는 문장입니다); 전자는 표현을 위한 것이고, 후자는 문장을 위한 것입니다.
문은 식의 일부가 될 수 없으므로 목록 및 기타 이해 또는 람다 식(모두 식)은 문을 포함할 수 없습니다. 특정한 경우는 다음과 같은 할당 명세서입니다. a = 1
조건문의 조건식을 구성할 수 없습니다. 이를 통해 할당 연산자를 착각하는 고전적인 C 오류를 피할 수 있는 장점이 있습니다. =
평등 사업자를 위하여 ==
조건: if (c = 1) { ... }
구문론적으로 유효하지만(아마도 의도하지 않은) C 코드입니다. if c = 1: ...
Python에서 구문 오류를 발생시킵니다.
방법들
개체에 대한 메서드는 개체의 클래스에 연결된 함수입니다. 구문 instance.method(argument)
는, 정상적인 방법과 기능에 대해, 통사적 설탕은 다음과 같습니다. Class.method(instance, argument)
. Python 메서드에는 명시적인 것이 있습니다. self
인스턴스 데이터에 액세스하기 위한 매개 변수(임의적인 자체)와 대조적입니다. this
) 일부 다른 객체 지향 프로그래밍 언어(예:[106] C++, Java, Objective-C, Ruby)에서. 파이썬은 또한 사용자 정의 클래스가 산술 연산 및 유형 변환에서 길이, 비교, 기본 연산에서 처리되는 방식을 수정할 수 있도록 종종 dunder methods(이중 언더스코어로 시작하고 끝나는 이름 때문에)라고 하는 방법을 제공합니다.[107]
타자 치기
Python은 오리 타이핑을 사용하며 타이핑된 개체가 있지만 타이핑되지 않은 변수 이름이 있습니다. 형식 제약 조건은 컴파일 시 확인되지 않으며, 오히려 개체에 대한 작업이 실패하여 개체가 적합한 유형이 아님을 나타냅니다. Python은 동적으로 타이핑되어 있음에도 불구하고, 잘 정의되지 않은 연산(예: 문자열에 숫자를 추가하는 것)을 조용히 이해하려고 시도하는 것이 아니라 금지합니다.
Python을 사용하면 프로그래머가 클래스를 사용하여 자신의 유형을 정의할 수 있으며, 객체 지향 프로그래밍에 가장 많이 사용됩니다. 클래스를 호출하여 클래스의 새 인스턴스를 구성합니다(예: SpamClass()
또는 EggsClass()
), 그리고 클래스는 메타 클래스의 예입니다. type
(itself 자체의 인스턴스), 메타프로그래밍과 성찰이 가능합니다.
버전 3.0 이전의 파이썬에는 두 종류의 클래스(둘 다 동일한 구문을 사용함)가 있었습니다: 오래된 스타일과 새로운 스타일,[108] 현재의 파이썬 버전은 시맨틱스 새 스타일만 지원합니다.
Python은 옵션 유형 주석을 지원합니다.[4][109] 이러한 주석은 언어에 의해 강제되지 않지만 오류를 잡기 위해 마이피와 같은 외부 도구에 의해 사용될 수 있습니다.[110][111] Mypy는 또한 최적화를 위해 유형 주석을 활용하는 mypyc라는 파이썬 컴파일러를 지원합니다.[112]
유형 | 변이성 | 묘사 | 구문 예제 |
---|---|---|---|
bool | 불변의 | 부울값 | True False |
bytearray | 변하기 쉬운 | 바이트 수열 | bytearray(b'Some ASCII') bytearray(b"Some ASCII") bytearray([119, 105, 107, 105]) |
bytes | 불변의 | 바이트 수열 | b'Some 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 | 불변의 | 2배 정밀 부동 소수점 번호입니다. 정밀도는 기계에 의존하지만 실제로는 일반적으로 53비트의 정밀도를 가진 64비트 IEEE 754 번호로 구현됩니다.[113] |
|
frozenset | 불변의 | 순서가 지정되지 않은 집합으로 중복을 포함하지 않으며, 해시 가능한 경우 혼합 유형을 포함할 수 있습니다. | frozenset([4.0, 'string', True]) |
int | 불변의 | 무한[114] 크기의 정수 | 42 |
list | 변하기 쉬운 | 목록, 혼합 유형을 포함할 수 있습니다. | [4.0, 'string', True] [] |
types.NoneType | 불변의 | 값이 없음을 나타내는 개체로, 다른 언어에서는 null이라고도 합니다. | None |
types.NotImplementedType | 불변의 | 지원되지 않는 피연산자 유형을 나타내기 위해 오버로드된 연산자에서 반환할 수 있는 자리 표시자입니다. | NotImplemented |
range | 불변의 | 특정 횟수를 반복하는 데 일반적으로 사용되는 숫자의 불변 시퀀스 for 고리[115] | range(-1, 10) range(10, -5, -2) |
set | 변하기 쉬운 | 순서가 지정되지 않은 집합으로 중복을 포함하지 않으며, 해시 가능한 경우 혼합 유형을 포함할 수 있습니다. | {4.0, 'string', True }set() |
str | 불변의 | 문자열: 유니코드 코드 포인트 시퀀스 | 'Wikipedia' "Wikipedia" ""스패닝" 배수의 대사" 스패닝 배수의 줄들 |
tuple | 불변의 | 혼합형 포함 가능 | (4.0, 'string', True) ('single element',) () |
산술 연산
Python은 산술 연산자를 위한 일반적인 기호를 가지고 있습니다.+
, -
, *
, /
), 층분할 운영자 //
그리고 모듈로 작업. %
(나머지가 음수일 수 있는 경우 등) 4 % -3 == -2
). 그것은 또한 **
예를 들어, 지수화를 위해. 5**3 == 125
그리고. 9**0.5 == 3.0
, 행렬-multip 곱셈 연산자 @
.[116]이러한[116] 연산자는 기존 수학과 같이 작동하며, 동일한 우선 순위 규칙을 사용하여 연산자를 고정합니다.+
그리고. -
또한 각각 양수와 음수를 나타내는 데 단항일 수 있습니다.
정수 간의 분할은 부동 소수점 결과를 생성합니다. 시간이 지남에 따라 분할의 행동은 크게 변화했습니다.[117]
- 현재 Python(3.0 이후) 변경됨
/
예를 들어, 항상 부동 소수점 분할을 합니다.5/2 == 2.5
. - 층구분
//
오퍼레이터가 도입되었습니다. 그래서.7//3 == 2
,-7//3 == -3
,7.5//3 == 2.0
그리고.-7.5//3 == -3.0
. 덧셈from __future__ import division
Python 2.7에서 사용되는 모듈은 분할을 위해 Python 3.0 규칙을 사용합니다(위 참조).
파이썬 용어로는 /
진정한 나눗셈(또는 단순히 나눗셈), 그리고 //
층 구분입니다. /
버전 3.0 이전은 고전적인 분할입니다.[117]
대부분의 언어와 다르지만 음의 무한대를 향해 반올림하면 일관성을 더합니다. 예를 들어, 이는 방정식이 (a + b)//b == a//b + 1
항상 참입니다. 그것은 또한 방정식을 의미합니다. b*(a//b) + a%b == a
의 양과 음의 값 모두에 유효합니다. a
. 그러나 이 방정식의 유효성을 유지한다는 것은 다음과 같은 결과를 의미합니다. a%b
는 예상대로 반열림 구간 [0, b]에서, 여기서 b
는 양의 정수이며, 다음과 같은 경우 (b, 0) 구간에 있어야 합니다. b
부정적입니다.[118]
Python은 다음을 제공합니다. round
플로트를 가장 가까운 정수로 반올림하기 위한 함수입니다. 타이브레이킹을 위해 Python 3는 라운드를 사용하여 다음과 같습니다. round(1.5)
그리고. round(2.5)
둘 다 생산하는 2
.[119]3 이전 버전은[119] 0에서 0으로 반올림하는 방식을 사용했습니다. round(0.5)
이다. 1.0
, round(-0.5)
이다. −1.0
.[120]
Python은 수학에서 일반적인 사용과 일치하는 방식으로 다중 등식 관계를 갖는 Boolean 식을 허용합니다. 예를 들어, 이 표현은 a < b < c
가 여부를 검정하다 a
보다 적습니다. b
그리고. b
보다 적습니다. c
.[121]C에서[121] 파생된 언어는 이 표현을 다르게 해석합니다: C에서 표현은 먼저 평가합니다. a < b
, 0 또는 1이 발생하면 그 결과는 다음과 비교됩니다. c
.[122]
Python은 모든 정수 연산에 임의의 정밀도 산술을 사용합니다. 그 Decimal
의 활자/급 decimal
모듈은 미리 정의된 임의의 정밀도와 여러 반올림 모드에 소수 부동 소수점 숫자를 제공합니다.[123] 그 Fraction
의 계급 fractions
모듈은 유리수에 대한 임의의 정밀도를 제공합니다.[124]
파이썬의 광범위한 수학 라이브러리와 네이티브 기능을 더욱 확장한 타사 라이브러리 NumPy로 인해 수치 데이터 처리 및 조작과 같은 문제를 지원하는 과학적 스크립트 언어로 자주 사용됩니다.[125][126]
프로그래밍 예제
활자로 인쇄하다('안녕, 세상!')
양의 정수의 요인을 계산하는 프로그램:
n = 인트의(입력의('숫자를 입력하면 그 계승이 인쇄됩니다.')) 한다면 n < 0: 올리다 값 오류('음이 아닌 정수를 입력해야 합니다.') 요인 = 1 위해서 i 안에 범위(2, n + 1): 요인 *= i 활자로 인쇄하다(요인)
라이브러리
Python의 대규모 표준 라이브러리는[127] 많은 작업에 적합한 도구를 제공하며 일반적으로 가장 큰 강점 중 하나로 꼽힙니다. 인터넷 대면 응용 프로그램의 경우 MIME 및 HTTP와 같은 많은 표준 형식과 프로토콜이 지원됩니다. 그래픽 사용자 인터페이스 생성, 관계형 데이터베이스 연결, 의사 난수 생성, 임의 정밀 소수점 산술,[123] 정규 표현식 조작, 단위 테스트를 위한 모듈이 포함되어 있습니다.
표준 라이브러리의 일부 부분은 사양(예: WSGI(Web Server Gateway Interface) 구현)으로 덮여 있습니다. wsgiref
PEP 333을[128] 따르지만 대부분은 코드, 내부 설명서 및 테스트 제품군에 따라 지정됩니다. 그러나 대부분의 표준 라이브러리가 크로스 플랫폼 Python 코드이기 때문에 변형 구현을 위해 변경하거나 다시 작성해야 하는 모듈은 소수에 불과합니다.
2022년 11월 14일 [update]현재 타사 파이썬 소프트웨어의 공식 저장소인 파이썬 패키지 인덱스(PyPI)에는 다음과 같은 광범위한 기능을 갖춘 415,000개[129] 이상의 패키지가 포함되어 있습니다.
개발 환경
대부분의 파이썬 구현(CPython 포함)에는 읽기-평가-인쇄 루프(REPL)가 포함되어 있어 사용자가 순차적으로 문을 입력하고 결과를 즉시 받을 수 있는 명령줄 인터프리터 기능을 수행할 수 있습니다.
Python은 또한 보다 초보자 지향적인 IDLE(Integrated Development Environment)를 제공합니다.
IDLE 및 IPython을 포함한 다른 셸은 향상된 자동 완성, 세션 상태 유지 및 구문 강조와 같은 기능을 추가합니다.
PyCharm, IntelliJ Idea, Visual Studio Code 등 표준 데스크톱 통합 개발 환경뿐만 아니라 과학 및 수학 관련 프로그램을 개발하기 위한 SageMath를 포함한 웹 브라우저 기반 IDE, 브라우저 기반 IDE 및 호스팅 환경인 PythonAnywhere 및 Canopy IDE, 과학적 컴퓨팅을 [130]강조하는 상업적 IDE
구현
레퍼런스 구현
CPython은 Python의 참조 구현입니다. C로 작성되어 C89 표준(Python 3.11은 C11을[131] 사용함)을 충족하며 C99 기능이 몇 가지 선택되어 있습니다. CPython에는 자체 C 확장이 포함되어 있지만 타사 확장은 이전 C 버전에만 국한되지 않습니다. 예를 들어 C11 또는 C++[132][133]로 구현할 수 있습니다.) Python 프로그램을 중간 바이트[134] 코드로 컴파일한 다음 가상 머신에서 실행합니다.[135] CPython은 C와 네이티브 Python이 혼합된 형태로 작성된 대규모 표준 라이브러리와 함께 배포되며, Windows를 포함한 많은 플랫폼에서 사용할 수 있습니다(Python 3.9부터 Python 설치 프로그램은 Windows 7과 8에서 의도적으로 설치하지 못합니다.[136][137] Windows XP는 Python 3.5까지 지원됨). macOS(그리고 Python 3.9.1 이후 Apple M1 Mac, 실험 설치 프로그램 포함)와 VMS와 같은 비공식적인 지원을 포함합니다.[138] 플랫폼 이식성은 초기 우선순위 중 하나였습니다.[139] (Python 1과 2 개발 중에 OS/2와 Solaris도 지원되었지만 [140]이후 많은 플랫폼에 대한 지원은 중단되었습니다.)
기타 구현
- PyPy는 Python 2.7 및 3.8의 빠르고 호환되는 해석기입니다.[141][142] 적시 컴파일러는 종종 CPython에 비해 상당한 속도 향상을 가져오지만 C로 작성된 일부 라이브러리는 이 컴파일러와 함께 사용할 수 없습니다.[143]
- 스택리스 파이썬은 마이크로 스레드를 구현하는 CPython의 중요한 포크입니다. 콜 스택을 동일한 방식으로 사용하지 않으므로 대량으로 동시 프로그램을 사용할 수 있습니다. PyPy에는 스택리스 버전도 있습니다.[144]
- 마이크로파이썬과 회로파이썬은 레고 마인드스톰 EV3를 포함한 마이크로컨트롤러에 최적화된 파이썬 3 변형입니다.[145]
- Pyston은 Python 런타임의 변형으로, Just-in-time 컴파일을 사용하여 Python 프로그램의 실행 속도를 높입니다.[146]
- Cinder는 성능 지향적인 CPython 3.8의 포크로 바이트코드 인라인 캐싱, 코루틴에 대한 열정적인 평가, 한 번에 Method-a-time-JIT, 실험적인 바이트코드 컴파일러 등 여러 최적화를 포함하고 있습니다.[147]
- Snek[148][149][150] Embedded Computing Language(예: ATmega 328P 기반 아두이노와 같은 8비트 AVR 마이크로컨트롤러 및 MicroPython과 같은 대형 컨트롤러도 지원 가능) "Python에서 영감을 얻었지만 Python은 아닙니다. 전체 파이썬 시스템에서 실행되는 스넥 프로그램을 작성하는 것은 가능하지만 대부분의 파이썬 프로그램은 스넥에서 실행되지 않을 것입니다." 이것은 파이썬과 달리 OOP/클래스를 포함하지 않는 필수 언어이며, 하나의 숫자 유형(자바스크립트와 같이 더 작은 것을 사용하는 것을 제외하고) 32비트 단일 정밀도로 단순화합니다. "24비트 미만의 정수 값은 이러한 부동 소수점 값으로 정확하게 표현할 수 있습니다.[151]
지원되지 않는 구현
다른 Just-in-time Python 컴파일러들이 개발되었으나 현재는 지원되지 않습니다.
- 구글은 2009년에 LLVM을 사용하여 파이썬 인터프리터의 속도를 5배 높이고, 일반적인 구현은 글로벌 인터프리터 잠금으로 인해 어려움을 겪지만,[152] 파이썬 인터프리터의 멀티스레드 기능을 향상시키는 것을 목표로 언라덴 스왈로우(Unladen Swallow)라는 프로젝트를 시작했습니다.
- 싸이코는 중단된 just-in-time 전문 컴파일러로, CPython과 통합되어 런타임에 바이트코드를 기계 코드로 변환합니다. 방출된 코드는 특정 데이터 유형에 특화되어 표준 파이썬 코드보다 빠릅니다. Psyco는 Python 2.7 이상을 지원하지 않습니다.
- PyS60은 노키아가 2005년에 출시한 시리즈 60 휴대폰용 파이썬 2 인터프리터였습니다. 표준 라이브러리의 많은 모듈과 심비안 운영 체제와 통합하기 위한 일부 추가 모듈을 구현했습니다. 또한 노키아 N900은 Python과 GTK 위젯 라이브러리를 지원하여 대상 장치에서 프로그램을 작성하고 실행할 수 있습니다.[153]
다른 언어로의 크로스 컴파일러
여러 컴파일러/트랜스필러가 상위 수준의 객체 언어로 존재하며, 제한되지 않은 파이썬, 제한된 파이썬의 하위 집합 또는 파이썬과 유사한 언어를 소스 언어로 사용합니다.
- Brython,[154] Transcrypt[155][156] 및 Pyjs(2012년 최신 릴리스)는 Python을 자바스크립트로 컴파일합니다.
- 코돈은 정적으로 입력된 파이썬의[157] 하위 집합을 (LLVM을 통해) 머신 코드로 컴파일하고 네이티브 멀티쓰레딩을 지원합니다.[158]
- Cython은 Python을 C로 컴파일합니다. 결과 코드는 파이썬 인터프리터에 직접 C-레벨 API 호출을 통해 파이썬과 함께 사용할 수도 있습니다.
- PyJL은 Python의 하위 집합을 "인간이 읽을 수 있고 유지 관리 가능하며 고성능 Julia 소스 코드"로 컴파일/전송합니다.[82] 고성능을 주장함에도 불구하고 임의의 Python 코드에 대해 그렇게 주장할 수 있는 도구는 없습니다. 즉, 더 빠른 언어나 기계 코드로 컴파일하는 것은 불가능하다고 알려져 있습니다. Python의 의미론이 변경되지 않는 한 많은 경우 Python 코드의 변경이 거의 또는 전혀 없이 속도 향상이 가능합니다. 그런 다음 더 빠른 줄리아 소스 코드를 파이썬에서 사용하거나 머신 코드로 컴파일하여 이러한 방식을 기반으로 사용할 수 있습니다.
- 누티카는 파이썬을 C로 컴파일합니다.[159]
- Numba는 LLVM을 사용하여 Python to machine 코드의 하위 집합을 컴파일합니다.
- Pythran은 Python 3의 하위 집합을 C++(C++11)로 컴파일합니다.[160]
- RPython은 C로 컴파일할 수 있으며 Python의 PyPy 인터프리터를 구축하는 데 사용됩니다.
- Python → 11l → C++ 트랜스파일러는 Python 3의 하위 집합을 C++(C++17)로 컴파일합니다.
전문:
- MyHDL은 파이썬 기반 하드웨어 설명 언어(HDL)로 MyHDL 코드를 Verilog 또는 VHDL 코드로 변환합니다.
이전 프로젝트(또는 Python 3.x 및 최신 구문에서 사용되지 않음):
- 구글의 Grumpy(2017년 최신 출시)는 Python 2를 Go로 트랜스파일링합니다.[162][163][164]
- IronPython은 Python 2.7 프로그램을 실행할 수 있습니다(그리고 2021년에 출시된 알파는 "Python 3.4에 사용할 수 있지만 이후 버전의 기능과 동작이 포함될 수 있습니다").[165]NET 공통 언어 런타임.[166]
- Jython은 Python 2.7을 Java 바이트코드로 컴파일하여 Python 프로그램에서 Java 라이브러리를 사용할 수 있습니다.[167]
- Pyrex(2010년 최신 릴리스)와 Shed Skin(2013년 최신 릴리스)은 각각 C와 C++로 컴파일합니다.
성능
EuroSciPy'13에서는 다양한 Python 구현을 비수치(조합) 워크로드에서 성능 비교했습니다.[168] 다른 프로그래밍 언어와 비교한 파이썬의 성능은 컴퓨터 언어 벤치마크 게임에서도 벤치마킹하고 있습니다.[169]
발전
파이썬의 개발은 크게 주요 새로운 기능을 제안하고 이슈에 대한 커뮤니티 입력을 수집하며 파이썬 설계 결정을 문서화하는 주요 메커니즘인 PEP(Python Enhancement Proposal) 프로세스를 통해 수행됩니다.[170] 파이썬 코딩 스타일은 PEP 8에서 다룹니다.[171] 뛰어난 PEP는 Python 커뮤니티와 운영 위원회에서 검토하고 논평합니다.[170]
언어의 향상은 CPython 참조 구현의 발전에 해당합니다. 메일링 리스트 python-dev는 언어 개발의 주요 포럼입니다. 특정 문제는 원래 재단이 주최한 라운드업 버그 트래커에서 논의되었습니다.[172] 2022년에는 모든 이슈와 토론이 깃허브로 마이그레이션되었습니다.[173] 개발은 원래 2017년 1월 파이썬이 깃허브로 이전할 때까지 머큐리알을 운영하는 자체 호스팅 소스코드 저장소에서 이루어졌습니다.[174]
CPython의 공개 릴리스는 버전 번호의 어느 부분이 증가하는지에 따라 구분되는 세 가지 유형으로 제공됩니다.
- 코드가 손상될 것으로 예상되고 수동으로 이식해야 하는 하위 호환 버전입니다. 버전 번호의 첫 번째 부분이 증가합니다. 이러한 릴리스는 드물게 발생합니다. 버전 3.0은 2.0 이후 8년 만에 출시되었습니다. Guido van Rossum에 따르면, 버전 4.0은 절대 일어나지 않을 것 같습니다.[175]
- 주요 릴리스 또는 "기능" 릴리스는 대부분 이전 버전과 호환되지만 새로운 기능을 도입합니다. 버전 번호의 두 번째 부분이 증가합니다. 이러한 릴리스는 Python 3.9를 시작으로 매년 발생할 것으로 예상됩니다.[176][177] 각 주요 버전은 출시 후 몇 년 동안 버그 수정을 지원합니다.[178]
- 새로운 기능을 도입하지 않는 [179]버그픽스 릴리스는 약 3개월마다 발생하며 지난 릴리스 이후 충분한 수의 버그가 업스트림에서 수정되었을 때 이루어집니다. 이러한 릴리스에는 보안 취약성도 패치되어 있습니다. 버전 번호의 세 번째와 마지막 부분이 증가합니다.[179]
많은 알파, 베타 및 출시 후보는 최종 출시 전에 미리보기 및 테스트용으로 출시됩니다. 출시마다 대략적인 일정이 있지만 코드가 준비되지 않으면 지연되는 경우가 많습니다. 파이썬의 개발팀은 개발 중에 대규모 단위 테스트 스위트를 실행하여 코드의 상태를 모니터링합니다.[180]
Python에 관한 주요 학술대회는 PyCon입니다. PyLadies와 같은 특별한 Python 멘토링 프로그램도 있습니다.
Python 3.12 제거 wstr
즉, Python 확장자를[181] 수정해야 하며,[182] 3.10은 언어에 일치하는 패턴을 추가했습니다.[183]
Python 3.12는 일부 오래된 모듈을 삭제했으며 향후 더 많은 모듈이 삭제될 예정이며, 3.13을 기준으로 더 이상 사용되지 않습니다. 이미 더 이상 사용되지 않는 배열 'u' 형식 코드가 출시됩니다. DeprecationWarning
3.13 이후로 Python 3.16에서 제거됩니다. 대신 'w' 형식 코드를 사용해야 합니다. C타입의 일부도 감가상각되어 있습니다. http.server.CGIHTTPRequestHandler
감가상각 경고가 표시되며 3.15에서 제거됩니다. 해당 코드를 사용하면 이미 보안 및 기능 버그가 발생할 가능성이 높습니다. 타이핑 모듈의 일부가 권장되지 않습니다. 예를 들어 다음과 같이 생성됩니다. typing.NamedTuple
키워드 인수를 사용하여 필드 등을 나타내는 클래스는 Python 3.15에서 허용되지 않습니다.
API 문서 생성기
파이썬 API를 위한 문서를 생성할 수 있는 도구로는 pydoc(표준 라이브러리의 일부로 사용 가능), Sphinks, Pdoc 및 포크, Doxygen 및 Graphviz 등이 있습니다.[184]
명명
파이썬의 이름은 파이썬 제작자 귀도 반 로섬이 언어를 개발하면서 즐겼던 영국 코미디 그룹 몬티 파이썬에서 따왔습니다. 몬티 파이썬 참조는 파이썬 코드와 문화에서 자주 나타납니다.[185] 예를 들어 파이썬 문헌에서 자주 사용되는 메타신택 변수는 전통적인 푸와 바 대신 스팸과 에그입니다.[185][186] 공식 Python 문서에는 Monty Python 루틴에 대한 다양한 참조도 포함되어 있습니다.[187][188] Python의 사용자들은 때때로 "Pythonista"라고 불립니다.[189]
Py- 접두사는 Python과 관련된 것을 보여주는 데 사용됩니다. 파이썬 애플리케이션이나 라이브러리의 이름에 이 접두사를 사용하는 예로는 SDL을 파이썬에 바인딩한 Pygame(게임을 만드는 데 일반적으로 사용됨)이 있습니다. PyQt와 PyGTK는 각각 Qt와 GTK를 Python에 바인딩하고 PyPy는 원래 Python으로 작성된 PyPy입니다.
인기
2003년부터 파이썬은 TIOBE 프로그래밍 커뮤니티 인덱스에서 가장 인기 있는 프로그래밍 언어 상위 10위 안에 지속적으로 랭크되어 왔으며, 2022년[update] 12월 현재 파이썬은 가장 인기 있는 언어입니다(C, C++, 자바보다 앞섰습니다).[38] 2007년, 2010년, 2018년, 2020년 올해의 프로그래밍 언어("1년 중 가장 높은 시청률 상승")로 선정되었습니다(2020년[update][190] 기준으로 4번 선정된 유일한 언어).
경험적 연구에 따르면 Python과 같은 스크립트 언어는 문자열 조작 및 사전 검색과 관련된 프로그래밍 문제에 대해 C 및 Java와 같은 기존 언어보다 더 생산적이며, 메모리 소비는 종종 "Java보다 낫고 C 또는 C++[191]보다 훨씬 나쁘지 않다"는 것으로 나타났습니다.
Large organizations that use Python include Wikipedia, Google,[192] Yahoo!,[193] CERN,[194] NASA,[195] Facebook,[196] Amazon, Instagram,[197] Spotify,[198] and some smaller entities like ILM[199] and ITA.[200] 소셜 뉴스 네트워킹 사이트 레딧은 대부분 파이썬으로 작성되었습니다.[201]
사용하다
Python은 예를 들어 Apache 웹 서버의 mod_wsgi를 통해 웹 응용 프로그램의 스크립트 언어 역할을 할 수 있습니다.[202] 웹 서버 게이트웨이 인터페이스를 통해 표준 API는 이러한 애플리케이션을 용이하게 하기 위해 발전했습니다. 장고, 파일론, 피라미드, 터보기어, web2py, Tornado, Flask, Bottle, Zope와 같은 웹 프레임워크는 복잡한 애플리케이션의 설계 및 유지보수에 있어 개발자를 지원합니다. Pyjs와 IronPython은 Ajax 기반 애플리케이션의 클라이언트 측 개발에 사용될 수 있습니다. SQL 화학은 관계형 데이터베이스에 대한 데이터 매퍼로 사용할 수 있습니다. 트위스트(Twisted)는 컴퓨터 간의 통신을 프로그래밍하기 위한 프레임워크로, 드롭박스(Dropbox)에 의해 사용됩니다.
NumPy, SciPy 및 Matplotlib과 같은 라이브러리를 사용하면 과학 컴퓨팅에서 Python을 효과적으로 사용할 수 [203][204]있으며 Biopython 및 Astropy와 같은 전문 라이브러리가 도메인별 기능을 제공합니다. SageMath는 Python에서 프로그래밍할 수 있는 노트북 인터페이스를 갖춘 컴퓨터 대수 시스템입니다. 라이브러리는 대수학, 조합론, 숫자 수학, 수론, 미적분학 등 수학의 여러 측면을 다룹니다.[205] OpenCV에는 컴퓨터 비전 및 이미지 처리를 위한 풍부한 기능 세트가 포함된 Python 바인딩이 있습니다.[206]
Python은 TensorFlow, Keras, Pytorch 및 scikit-learn과 같은 라이브러리의 도움을 받아 인공 지능 프로젝트 및 기계 학습 프로젝트에 일반적으로 사용됩니다.[207][208][209][210] 모듈식 아키텍처, 간단한 구문 및 풍부한 텍스트 처리 도구를 갖춘 스크립트 언어로서 Python은 자연어 처리에 자주 사용됩니다.[211]
파이썬은 Tkinter와 같은 라이브러리를 사용하여 그래픽 사용자 인터페이스(GUI)에도 사용할 수 있습니다.[212][213]
파이썬은 2D 게임을 만들 수 있는 Pygame과 같은 라이브러리를 사용하여 게임을 만드는 데에도 사용할 수 있습니다.
Python은 Abaqus와 같은 유한 요소 메소드 소프트웨어, FreeCAD와 같은 3D 파라메트릭 모델, 3ds Max, Blender, Cinema 4D와 같은 3D 애니메이션 패키지, Lightwave, Houdini, Maya, Modo, MotionBuilder, Softimage, 시각 효과 작곡가 Nuke를 포함한 많은 소프트웨어 제품에 스크립팅 언어로 성공적으로 내장되었습니다. GIMP,[214] Inkscape, Scribus 및 Paint Shop Pro와 같은 2D 이미징 프로그램과 스코어라이터 및 카펠라와 같은 음악 기보 프로그램.[215] GNU Debugger는 Python을 예쁜 프린터로 사용하여 C++ 컨테이너와 같은 복잡한 구조를 보여줍니다. Esri는 ArcGIS에서 스크립트를 작성하기 위한 최적의 선택으로 Python을 홍보합니다.[216] 또한 여러 비디오 게임에 사용되었으며,[217][218] 구글 앱 엔진에서 사용 가능한 세 가지 프로그래밍 언어 중 첫 번째 언어로 채택되었으며, 나머지 두 가지는 자바와 바둑입니다.[219]
많은 운영 체제에는 Python이 표준 구성 요소로 포함되어 있습니다. 대부분의 리눅스 배포판인 아미가OS 4([220]파이썬 2.7 사용), FreeBSD(패키지로), NetBSD, OpenBSD(패키지로)와 함께 제공되며 명령줄(단말기)에서 사용할 수 있습니다. 많은 리눅스 배포판은 파이썬으로 작성된 설치 프로그램을 사용합니다. 우분투는 유비퀴티 설치 프로그램을 사용하고 레드햇 리눅스와 페도라 리눅스는 아나콘다 설치 프로그램을 사용합니다. Gentoo Linux는 패키지 관리 시스템인 Portage에서 Python을 사용합니다.
Python은 개발을 포함하여 정보 보안 산업에서 광범위하게 사용됩니다.[221][222]
2008년[update] 현재 Sugar Labs에서 개발된 One Laptop per Child XO용 Sugar 소프트웨어의 대부분은 Python으로 작성되었습니다.[223] Raspberry Pi 단일 보드 컴퓨터 프로젝트는 Python을 주요 사용자 프로그래밍 언어로 채택했습니다.
LibreOffice에는 Python이 포함되어 있으며 Java를 Python으로 대체하고자 합니다. Python Scripting Provider는 2013년 2월 7일 버전 4.0 이후의 핵심 기능입니다[224].
파이썬의 영향을 받은 언어
파이썬의 디자인과 철학은 다른 많은 프로그래밍 언어에 영향을 미쳤습니다.
- 부는 들여쓰기, 유사한 구문 및 유사한 개체 모델을 사용합니다.[225]
- 코브라는 들여쓰기와 이와 유사한 구문을 사용하며, 인정 문서는 파이썬에 영향을 미친 언어 중 가장 먼저 나열합니다.[226]
- 자바스크립트로 교차 컴파일하는 프로그래밍 언어인 커피스크립트는 파이썬에서 영감을 받은 구문을 가지고 있습니다.
- ECMAScript/JavaScript는 Python에서 반복자와 생성자를 빌렸습니다.[227]
- Python과 매우 유사한 스크립트 언어인 GDScript는 고도트 게임 엔진에 내장되어 있습니다.[228]
- Go는 "Python과 같은 동적 언어로 작업하는 속도"[229]를 위해 설계되었으며 슬라이싱 어레이에 대해서도 동일한 구문을 공유합니다.
- 그루비는 파이썬 디자인 철학을 자바로 가져오려는 열망에 자극을 받았습니다.[230]
- 줄리아(Julia)는 "파이썬(Python)만큼 일반적인 프로그래밍에 사용할 수 있도록 설계되었습니다."[26]
- Mojo는 현재 Python의 엄격하지[27][231] 않은(엄격한) 슈퍼셋(예: 여전히 클래스가 누락되고 구조가 추가됨)이며, 정적 타이핑이 도움이 되는(그리고 MLIR로 구현됨) 일부 코드의 경우 최대 35,000배 더[232][better source needed] 빠르며, 예: 행렬 곱셈의 경우 4000배 더 빠릅니다.
- 님은 들여쓰기와 유사한 구문을 사용합니다.[233]
- Ruby의 제작자인 Yukihiro Matsumoto는 "저는 Perl보다 더 강력하고 Python보다 객체 지향적인 스크립트 언어를 원했습니다. 그래서 나만의 언어를 디자인하기로 결심한 것입니다."[234]
- 애플이 개발한 프로그래밍 언어인 스위프트는 파이썬에서 영감을 받은 구문을 가지고 있습니다.[235]
파이썬의 개발 관행은 다른 언어에서도 모방되었습니다. 예를 들어, Tcl,[236] Erlang [237]및 Swift에서도 언어 변경에 대한 근거와 관련된 문제를 설명하는 문서를 요구하는 관행이 사용됩니다.[238]
참고 항목
참고문헌
- ^ "General Python FAQ – Python 3.9.2 documentation". docs.python.org. Archived from the original on 24 October 2012. Retrieved 28 March 2021.
- ^ "Python 0.9.1 part 01/21". alt.sources archives. Archived from the original on 11 August 2021. Retrieved 11 August 2021.
- ^ "Why is Python a dynamic language and also a strongly typed language". Python Wiki. Archived from the original on 14 March 2021. Retrieved 27 January 2021.
- ^ a b "PEP 483 – The Theory of Type Hints". Python.org. Archived from the original on 14 June 2020. Retrieved 14 June 2018.
- ^ "test – Regression tests package for Python – Python 3.7.13 documentation". docs.python.org. Archived from the original on 17 May 2022. Retrieved 17 May 2022.
- ^ "platform – Access to underlying platform's identifying data – Python 3.10.4 documentation". docs.python.org. Archived from the original on 17 May 2022. Retrieved 17 May 2022.
- ^ "Download Python for Other Platforms". Python.org. Retrieved 18 August 2023.
- ^ Holth, Moore (30 March 2014). "PEP 0441 – Improving Python ZIP Application Support". Archived from the original on 26 December 2018. Retrieved 12 November 2015.
- ^ "Starlark Language". Archived from the original on 15 June 2020. Retrieved 25 May 2019.
- ^ a b "Why was Python created in the first place?". General Python FAQ. Python Software Foundation. Archived from the original on 24 October 2012. Retrieved 22 March 2007.
I had extensive experience with implementing an interpreted language in the ABC group at CWI, and from working with this group I had learned a lot about language design. This is the origin of many Python features, including the use of indentation for statement grouping and the inclusion of very high-level data types (although the details are all different in Python).
- ^ "Ada 83 Reference Manual (raise statement)". Archived from the original on 22 October 2019. Retrieved 7 January 2020.
- ^ a b Kuchling, Andrew M. (22 December 2006). "Interview with Guido van Rossum (July 1998)". amk.ca. Archived from the original on 1 May 2007. Retrieved 12 March 2012.
I'd spent a summer at DEC's Systems Research Center, which introduced me to Modula-2+; the Modula-3 final report was being written there at about the same time. What I learned there later showed up in Python's exception handling, modules, and the fact that methods explicitly contain 'self' in their parameter list. String slicing came from Algol-68 and Icon.
- ^ a b c "itertools – Functions creating iterators for efficient looping – Python 3.7.1 documentation". docs.python.org. Archived from the original on 14 June 2020. Retrieved 22 November 2016.
This module implements a number of iterator building blocks inspired by constructs from APL, Haskell, and SML.
- ^ van Rossum, Guido (1993). "An Introduction to Python for UNIX/C Programmers". Proceedings of the NLUUG Najaarsconferentie (Dutch UNIX Users Group). CiteSeerX 10.1.1.38.2023.
even though the design of C is far from ideal, its influence on Python is considerable.
- ^ a b "Classes". The Python Tutorial. Python Software Foundation. Archived from the original on 23 October 2012. Retrieved 20 February 2012.
It is a mixture of the class mechanisms found in C++ and Modula-3
- ^ Lundh, Fredrik. "Call By Object". effbot.org. Archived from the original on 23 November 2019. Retrieved 21 November 2017.
replace "CLU" with "Python", "record" with "instance", and "procedure" with "function or method", and you get a pretty accurate description of Python's object model.
- ^ Simionato, Michele. "The Python 2.3 Method Resolution Order". Python Software Foundation. Archived from the original on 20 August 2020. Retrieved 29 July 2014.
The C3 method itself has nothing to do with Python, since it was invented by people working on Dylan and it is described in a paper intended for lispers
- ^ Kuchling, A. M. "Functional Programming HOWTO". Python v2.7.2 documentation. Python Software Foundation. Archived from the original on 24 October 2012. Retrieved 9 February 2012.
List comprehensions and generator expressions [...] are a concise notation for such operations, borrowed from the functional programming language Haskell.
- ^ Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (18 May 2001). "PEP 255 – Simple Generators". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 5 June 2020. Retrieved 9 February 2012.
- ^ "More Control Flow Tools". Python 3 documentation. Python Software Foundation. Archived from the original on 4 June 2016. Retrieved 24 July 2015.
By popular demand, a few features commonly found in functional programming languages like Lisp have been added to Python. With the lambda keyword, small anonymous functions can be created.
- ^ "re – Regular expression operations – Python 3.10.6 documentation". docs.python.org. Archived from the original on 18 July 2018. Retrieved 6 September 2022.
This module provides regular expression matching operations similar to those found in Perl.
- ^ "CoffeeScript". coffeescript.org. Archived from the original on 12 June 2020. Retrieved 3 July 2018.
- ^ "The Genie Programming Language Tutorial". Archived from the original on 1 June 2020. Retrieved 28 February 2020.
- ^ "Perl and Python influences in JavaScript". www.2ality.com. 24 February 2013. Archived from the original on 26 December 2018. Retrieved 15 May 2015.
- ^ Rauschmayer, Axel. "Chapter 3: The Nature of JavaScript; Influences". O'Reilly, Speaking JavaScript. Archived from the original on 26 December 2018. Retrieved 15 May 2015.
- ^ a b "Why We Created Julia". Julia website. February 2012. Archived from the original on 2 May 2020. Retrieved 5 June 2014.
We want something as usable for general programming as Python [...]
- ^ a b Krill, Paul (4 May 2023). "Mojo language marries Python and MLIR for AI development". InfoWorld. Archived from the original on 5 May 2023. Retrieved 5 May 2023.
- ^ Ring Team (4 December 2017). "Ring and other languages". ring-lang.net. ring-lang. Archived from the original on 25 December 2018. Retrieved 4 December 2017.
- ^ Bini, Ola (2007). Practical JRuby on Rails Web 2.0 Projects: bringing Ruby on Rails to the Java platform. Berkeley: APress. p. 3. ISBN 978-1-59059-881-8.
- ^ Lattner, Chris (3 June 2014). "Chris Lattner's Homepage". Chris Lattner. Archived from the original on 25 December 2018. Retrieved 3 June 2014.
The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.
- ^ Kuhlman, Dave. "A Python Book: Beginning Python, Advanced Python, and Python Exercises". Section 1.1. Archived from the original (PDF) on 23 June 2012.
- ^ "About Python". Python Software Foundation. Archived from the original on 20 April 2012. Retrieved 24 April 2012."About Python". Python Software Foundation. Archived from the original on 20 April 2012. Retrieved 24 April 2012.두 번째 섹션 "Python의 팬들은 비동기 처리에서 zip 파일에 이르기까지 모든 것을 다루는 표준 라이브러리를 설명하기 위해 "배터리 포함"이라는 문구를 사용합니다."
- ^ "PEP 206 – Python Advanced Library". Python.org. Archived from the original on 5 May 2021. Retrieved 11 October 2021.
- ^ Rossum, Guido Van (20 January 2009). "The History of Python: A Brief Timeline of Python". The History of Python. Archived from the original on 5 June 2020. Retrieved 5 March 2021.
- ^ Peterson, Benjamin (20 April 2020). "Python Insider: Python 2.7.18, the last release of Python 2". Python Insider. Archived from the original on 26 April 2020. Retrieved 27 April 2020.
- ^ "Stack Overflow Developer Survey 2022". Stack Overflow. Archived from the original on 27 June 2022. Retrieved 12 August 2022.
- ^ "The State of Developer Ecosystem in 2020 Infographic". JetBrains: Developer Tools for Professionals and Teams. Archived from the original on 1 March 2021. Retrieved 5 March 2021.
- ^ a b "TIOBE Index". TIOBE. Archived from the original on 25 February 2018. Retrieved 3 January 2023.
The TIOBE Programming Community index is an indicator of the popularity of programming languages
필요에 따라 업데이트됩니다. - ^ "PYPL PopularitY of Programming Language index". pypl.github.io. Archived from the original on 14 March 2017. Retrieved 26 March 2021.
- ^ a b Venners, Bill (13 January 2003). "The Making of Python". Artima Developer. Artima. Archived from the original on 1 September 2016. Retrieved 22 March 2007.
- ^ van Rossum, Guido (29 August 2000). "SETL (was: Lukewarm about range literals)". Python-Dev (Mailing list). Archived from the original on 14 July 2018. Retrieved 13 March 2011.
- ^ van Rossum, Guido (20 January 2009). "A Brief Timeline of Python". The History of Python. Archived from the original on 5 June 2020. Retrieved 20 January 2009.
- ^ Fairchild, Carlie (12 July 2018). "Guido van Rossum Stepping Down from Role as Python's Benevolent Dictator For Life". Linux Journal. Archived from the original on 13 July 2018. Retrieved 13 July 2018.
- ^ "PEP 8100". Python Software Foundation. Archived from the original on 4 June 2020. Retrieved 4 May 2019.
- ^ "PEP 13 – Python Language Governance". Python.org. Archived from the original on 27 May 2021. Retrieved 25 August 2021.
- ^ Kuchling, A. M.; Zadka, Moshe (16 October 2000). "What's New in Python 2.0". Python Software Foundation. Archived from the original on 23 October 2012. Retrieved 11 February 2012.
- ^ van Rossum, Guido (5 April 2006). "PEP 3000 – Python 3000". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 3 March 2016. Retrieved 27 June 2009.
- ^ "2to3 – Automated Python 2 to 3 code translation". docs.python.org. Archived from the original on 4 June 2020. Retrieved 2 February 2021.
- ^ "PEP 373 – Python 2.7 Release Schedule". python.org. Archived from the original on 19 May 2020. Retrieved 9 January 2017.
- ^ "PEP 466 – Network Security Enhancements for Python 2.7.x". python.org. Archived from the original on 4 June 2020. Retrieved 9 January 2017.
- ^ "Sunsetting Python 2". Python.org. Archived from the original on 12 January 2020. Retrieved 22 September 2019.
- ^ "PEP 373 – Python 2.7 Release Schedule". Python.org. Archived from the original on 13 January 2020. Retrieved 22 September 2019.
- ^ "Python Release Python 3.7.17". Python.org. Retrieved 18 August 2023.
- ^ mattip (25 December 2023). "PyPy v7.3.14 release". PyPy. Retrieved 5 January 2024.
- ^ "Red Hat Customer Portal – Access to 24x7 support and knowledge". access.redhat.com. Archived from the original on 6 March 2021. Retrieved 26 February 2021.
- ^ "CVE – CVE-2021-3177". cve.mitre.org. Archived from the original on 27 February 2021. Retrieved 26 February 2021.
- ^ "CVE – CVE-2021-23336". cve.mitre.org. Archived from the original on 24 February 2021. Retrieved 26 February 2021.
- ^ Langa, Łukasz (24 March 2022). "Python Insider: Python 3.10.4 and 3.9.12 are now available out of schedule". Python Insider. Archived from the original on 21 April 2022. Retrieved 19 April 2022.
- ^ Langa, Łukasz (16 March 2022). "Python Insider: Python 3.10.3, 3.9.11, 3.8.13, and 3.7.13 are now available with security content". Python Insider. Archived from the original on 17 April 2022. Retrieved 19 April 2022.
- ^ Langa, Łukasz (17 May 2022). "Python Insider: Python 3.9.13 is now available". Python Insider. Archived from the original on 17 May 2022. Retrieved 21 May 2022.
- ^ "Python Insider: Python releases 3.10.7, 3.9.14, 3.8.14, and 3.7.14 are now available". pythoninsider.blogspot.com. 7 September 2022. Archived from the original on 13 September 2022. Retrieved 16 September 2022.
- ^ "CVE - CVE-2020-10735". cve.mitre.org. Archived from the original on 20 September 2022. Retrieved 16 September 2022.
- ^ corbet (24 October 2022). "Python 3.11 released [LWN.net]". lwn.net. Retrieved 15 November 2022.
- ^ "Python". endoflife.date. 10 August 2023. Retrieved 15 August 2023.
- ^ The Cain Gang Ltd. "Python Metaclasses: Who? Why? When?" (PDF). Archived from the original (PDF) on 30 May 2009. Retrieved 27 June 2009.
- ^ "3.3. Special method names". The Python Language Reference. Python Software Foundation. Archived from the original on 15 December 2018. Retrieved 27 June 2009.
- ^ "PyDBC: method preconditions, method postconditions and class invariants for Python". Archived from the original on 23 November 2019. Retrieved 24 September 2011.
- ^ "Contracts for Python". Archived from the original on 15 June 2020. Retrieved 24 September 2011.
- ^ "PyDatalog". Archived from the original on 13 June 2020. Retrieved 22 July 2012.
- ^ "Extending and Embedding the Python Interpreter: Reference Counts". Docs.python.org. Archived from the original on 18 October 2012. Retrieved 5 June 2020.
Since Python makes heavy use of
malloc()
andfree()
, it needs a strategy to avoid memory leaks as well as the use of freed memory. The chosen method is called reference counting. - ^ a b Hettinger, Raymond (30 January 2002). "PEP 289 – Generator Expressions". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 14 June 2020. Retrieved 19 February 2012.
- ^ "6.5 itertools – Functions creating iterators for efficient looping". Docs.python.org. Archived from the original on 14 June 2020. Retrieved 22 November 2016.
- ^ a b Peters, Tim (19 August 2004). "PEP 20 – The Zen of Python". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 26 December 2018. Retrieved 24 November 2008.
- ^ Lutz, Mark (January 2022). "Python Changes 2014+". Learning Python. Retrieved 25 February 2024.
- ^ Thomas, Robin (3 May 2023). "Python is not a great programming language". GitHub Gist. Retrieved 25 February 2024.
- ^ "Confusion regarding a rule in The Zen of Python". Python Help - Discussions on Python.org. 3 May 2022. Retrieved 25 February 2024.
- ^ Ambi, Chetan (4 July 2021). "The Most Controversial Python Walrus Operator". Python Simplified. Retrieved 5 February 2024.
- ^ Grifski, Jeremy (24 May 2020). "The Controversy Behind The Walrus Operator in Python". The Renegade Coder. Retrieved 25 February 2024.
- ^ Bader, Dan. "Python String Formatting Best Practices". Real Python. Retrieved 25 February 2024.
- ^ Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Python Cookbook, 2nd Edition. O'Reilly Media. p. 230. ISBN 978-0-596-00797-3. Archived from the original on 23 February 2020. Retrieved 14 November 2015.
- ^ "Python Culture". ebeab. 21 January 2014. Archived from the original on 30 January 2014.
- ^ a b "Transpiling Python to Julia using PyJL" (PDF).
After manually modifying one line of code by specifying the necessary type information, we obtained a speedup of 52.6×, making the translated Julia code 19.5× faster than the original Python code.
- ^ "Why is it called Python?". General Python FAQ. Docs.python.org. Archived from the original on 24 October 2012. Retrieved 3 January 2023.
- ^ "15 Ways Python Is a Powerful Force on the Web". Archived from the original on 11 May 2019. Retrieved 3 July 2018.
- ^ "pprint – Data pretty printer – Python 3.11.0 documentation". docs.python.org. Archived from the original on 22 January 2021. Retrieved 5 November 2022.
stuff=['spam', 'eggs', 'lumberjack', 'knights', 'ni']
- ^ Clark, Robert (26 April 2019). "How to be Pythonic and why you should care". Medium. Archived from the original on 13 August 2021. Retrieved 20 January 2021.
- ^ "Code Style – The Hitchhiker's Guide to Python". docs.python-guide.org. Archived from the original on 27 January 2021. Retrieved 20 January 2021.
- ^ "Is Python a good language for beginning programmers?". General Python FAQ. Python Software Foundation. Archived from the original on 24 October 2012. Retrieved 21 March 2007.
- ^ "Myths about indentation in Python". Secnetix.de. Archived from the original on 18 February 2018. Retrieved 19 April 2011.
- ^ Guttag, John V. (12 August 2016). Introduction to Computation and Programming Using Python: With Application to Understanding Data. MIT Press. ISBN 978-0-262-52962-4.
- ^ "PEP 8 – Style Guide for Python Code". Python.org. Archived from the original on 17 April 2019. Retrieved 26 March 2019.
- ^ "8. Errors and Exceptions – Python 3.12.0a0 documentation". docs.python.org. Archived from the original on 9 May 2022. Retrieved 9 May 2022.
- ^ "Highlights: Python 2.5". Python.org. Archived from the original on 4 August 2019. Retrieved 20 March 2018.
- ^ van Rossum, Guido (22 April 2009). "Tail Recursion Elimination". Neopythonic.blogspot.be. Archived from the original on 19 May 2018. Retrieved 3 December 2012.
- ^ van Rossum, Guido (9 February 2006). "Language Design Is Not Just Solving Puzzles". Artima forums. Artima. Archived from the original on 17 January 2020. Retrieved 21 March 2007.
- ^ van Rossum, Guido; Eby, Phillip J. (10 May 2005). "PEP 342 – Coroutines via Enhanced Generators". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 29 May 2020. Retrieved 19 February 2012.
- ^ "PEP 380". Python.org. Archived from the original on 4 June 2020. Retrieved 3 December 2012.
- ^ "division". python.org. Archived from the original on 20 July 2006. Retrieved 30 July 2014.
- ^ "PEP 0465 – A dedicated infix operator for matrix multiplication". python.org. Archived from the original on 4 June 2020. Retrieved 1 January 2016.
- ^ "Python 3.5.1 Release and Changelog". python.org. Archived from the original on 14 May 2020. Retrieved 1 January 2016.
- ^ "What's New in Python 3.8". Archived from the original on 8 June 2020. Retrieved 14 October 2019.
- ^ van Rossum, Guido; Hettinger, Raymond (7 February 2003). "PEP 308 – Conditional Expressions". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 13 March 2016. Retrieved 13 July 2011.
- ^ "4. Built-in Types – Python 3.6.3rc1 documentation". python.org. Archived from the original on 14 June 2020. Retrieved 1 October 2017.
- ^ "5.3. Tuples and Sequences – Python 3.7.1rc2 documentation". python.org. Archived from the original on 10 June 2020. Retrieved 17 October 2018.
- ^ a b "PEP 498 – Literal String Interpolation". python.org. Archived from the original on 15 June 2020. Retrieved 8 March 2017.
- ^ "Why must 'self' be used explicitly in method definitions and calls?". Design and History FAQ. Python Software Foundation. Archived from the original on 24 October 2012. Retrieved 19 February 2012.
- ^ Sweigart, Al (2020). Beyond the Basic Stuff with Python: Best Practices for Writing Clean Code. No Starch Press. p. 322. ISBN 978-1-59327-966-0. Archived from the original on 13 August 2021. Retrieved 7 July 2021.
- ^ "The Python Language Reference, section 3.3. New-style and classic classes, for release 2.7.1". Archived from the original on 26 October 2012. Retrieved 12 January 2011.
- ^ "PEP 484 – Type Hints peps.python.org". peps.python.org. Retrieved 29 November 2023.
- ^ "typing — Support for type hints". Python documentation. Python Software Foundation. Retrieved 22 December 2023.
- ^ "mypy – Optional Static Typing for Python". Archived from the original on 6 June 2020. Retrieved 28 January 2017.
- ^ "Introduction". mypyc.readthedocs.io. Retrieved 22 December 2023.
- ^ "15. Floating Point Arithmetic: Issues and Limitations – Python 3.8.3 documentation". docs.python.org. Archived from the original on 6 June 2020. Retrieved 6 June 2020.
Almost all machines today (November 2000) use IEEE-754 floating point arithmetic, and almost all platforms map Python floats to IEEE-754 "double precision".
- ^ Zadka, Moshe; van Rossum, Guido (11 March 2001). "PEP 237 – Unifying Long Integers and Integers". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 28 May 2020. Retrieved 24 September 2011.
- ^ "Built-in Types". Archived from the original on 14 June 2020. Retrieved 3 October 2019.
- ^ "PEP 465 – A dedicated infix operator for matrix multiplication". python.org. Archived from the original on 29 May 2020. Retrieved 3 July 2018.
- ^ a b Zadka, Moshe; van Rossum, Guido (11 March 2001). "PEP 238 – Changing the Division Operator". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 28 May 2020. Retrieved 23 October 2013.
- ^ "Why Python's Integer Division Floors". 24 August 2010. Archived from the original on 5 June 2020. Retrieved 25 August 2010.
- ^ "round", The Python standard library, release 3.2, §2: Built-in functions, archived from the original on 25 October 2012, retrieved 14 August 2011
- ^ "round", The Python standard library, release 2.7, §2: Built-in functions, archived from the original on 27 October 2012, retrieved 14 August 2011
- ^ Beazley, David M. (2009). Python Essential Reference (4th ed.). Addison-Wesley Professional. p. 66. ISBN 9780672329784.
- ^ Kernighan, Brian W.; Ritchie, Dennis M. (1988). The C Programming Language (2nd ed.). p. 206.
- ^ a b Batista, Facundo (17 October 2003). "PEP 327 – Decimal Data Type". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 4 June 2020. Retrieved 24 November 2008.
- ^ "What's New in Python 2.6". Python v2.6.9 documentation. 29 October 2013. Archived from the original on 23 December 2019. Retrieved 26 September 2015.
- ^ "10 Reasons Python Rocks for Research (And a Few Reasons it Doesn't) – Hoyt Koepke". University of Washington Department of Statistics. Archived from the original on 31 May 2020. Retrieved 3 February 2019.
- ^ Shell, Scott (17 June 2014). "An introduction to Python for scientific computing" (PDF). Archived (PDF) from the original on 4 February 2019. Retrieved 3 February 2019.
- ^ Piotrowski, Przemyslaw (July 2006). "Build a Rapid Web Development Environment for Python Server Pages and Oracle". Oracle Technology Network. Oracle. Archived from the original on 2 April 2019. Retrieved 12 March 2012.
- ^ Eby, Phillip J. (7 December 2003). "PEP 333 – Python Web Server Gateway Interface v1.0". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 14 June 2020. Retrieved 19 February 2012.
- ^ "Modulecounts". Modulecounts. 14 November 2022. Archived from the original on 26 June 2022.
- ^ Enthought, Canopy. "Canopy". www.enthought.com. Archived from the original on 15 July 2017. Retrieved 20 August 2016.
- ^ "PEP 7 – Style Guide for C Code peps.python.org". peps.python.org. Archived from the original on 24 April 2022. Retrieved 28 April 2022.
- ^ "4. Building C and C++ Extensions – Python 3.9.2 documentation". docs.python.org. Archived from the original on 3 March 2021. Retrieved 1 March 2021.
- ^ van Rossum, Guido (5 June 2001). "PEP 7 – Style Guide for C Code". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 1 June 2020. Retrieved 24 November 2008.
- ^ "CPython byte code". Docs.python.org. Archived from the original on 5 June 2020. Retrieved 16 February 2016.
- ^ "Python 2.5 internals" (PDF). Archived (PDF) from the original on 6 August 2012. Retrieved 19 April 2011.
- ^ "Changelog – Python 3.9.0 documentation". docs.python.org. Archived from the original on 7 February 2021. Retrieved 8 February 2021.
- ^ "Download Python". Python.org. Archived from the original on 8 December 2020. Retrieved 13 December 2020.
- ^ "history [vmspython]". www.vmspython.org. Archived from the original on 2 December 2020. Retrieved 4 December 2020.
- ^ "An Interview with Guido van Rossum". Oreilly.com. Archived from the original on 16 July 2014. Retrieved 24 November 2008.
- ^ "Download Python for Other Platforms". Python.org. Archived from the original on 27 November 2020. Retrieved 4 December 2020.
- ^ "PyPy compatibility". Pypy.org. Archived from the original on 6 June 2020. Retrieved 3 December 2012.
- ^ Team, The PyPy (28 December 2019). "Download and Install". PyPy. Archived from the original on 8 January 2022. Retrieved 8 January 2022.
- ^ "speed comparison between CPython and Pypy". Speed.pypy.org. Archived from the original on 10 May 2021. Retrieved 3 December 2012.
- ^ "Application-level Stackless features – PyPy 2.0.2 documentation". Doc.pypy.org. Archived from the original on 4 June 2020. Retrieved 17 July 2013.
- ^ "Python-for-EV3". LEGO Education. Archived from the original on 7 June 2020. Retrieved 17 April 2019.
- ^ Yegulalp, Serdar (29 October 2020). "Pyston returns from the dead to speed Python". InfoWorld. Archived from the original on 27 January 2021. Retrieved 26 January 2021.
- ^ "cinder: Instagram's performance-oriented fork of CPython". GitHub. Archived from the original on 4 May 2021. Retrieved 4 May 2021.
- ^ Aroca, Rafael (7 August 2021). "Snek Lang: feels like Python on Arduinos". Yet Another Technology Blog. Retrieved 4 January 2024.
- ^ Aufranc (CNXSoft), Jean-Luc (16 January 2020). "Snekboard Controls LEGO Power Functions with CircuitPython or Snek Programming Languages (Crowdfunding) - CNX Software". CNX Software - Embedded Systems News. Retrieved 4 January 2024.
- ^ Kennedy (@mkennedy), Michael. "Ready to find out if you're git famous?". pythonbytes.fm. Retrieved 4 January 2024.
- ^ Packard, Keith (20 December 2022). "The Snek Programming Language: A Python-inspired Embedded Computing Language" (PDF).
- ^ "Plans for optimizing Python". Google Project Hosting. 15 December 2009. Archived from the original on 11 April 2016. Retrieved 24 September 2011.
- ^ "Python on the Nokia N900". Stochastic Geometry. 29 April 2010. Archived from the original on 20 June 2019. Retrieved 9 July 2015.
- ^ "Brython". brython.info. Archived from the original on 3 August 2018. Retrieved 21 January 2021.
- ^ "Transcrypt – Python in the browser". transcrypt.org. Archived from the original on 19 August 2018. Retrieved 22 December 2020.
- ^ "Transcrypt: Anatomy of a Python to JavaScript Compiler". InfoQ. Archived from the original on 5 December 2020. Retrieved 20 January 2021.
- ^ "Codon: Differences with Python". Archived from the original on 25 May 2023. Retrieved 28 August 2023.
- ^ Lawson, Loraine (14 March 2023). "MIT-Created Compiler Speeds up Python Code". The New Stack. Archived from the original on 6 April 2023. Retrieved 28 August 2023.
- ^ "Nuitka Home Nuitka Home". nuitka.net. Archived from the original on 30 May 2020. Retrieved 18 August 2017.
- ^ Guelton, Serge; Brunet, Pierrick; Amini, Mehdi; Merlini, Adrien; Corbillon, Xavier; Raynaud, Alan (16 March 2015). "Pythran: enabling static optimization of scientific Python programs". Computational Science & Discovery. IOP Publishing. 8 (1): 014001. Bibcode:2015CS&D....8a4001G. doi:10.1088/1749-4680/8/1/014001. ISSN 1749-4699.
- ^ "The Python → 11l → C++ transpiler". Archived from the original on 24 September 2022. Retrieved 17 July 2022.
- ^ "google/grumpy". 10 April 2020. Archived from the original on 15 April 2020. Retrieved 25 March 2020 – via GitHub.
- ^ "Projects". opensource.google. Archived from the original on 24 April 2020. Retrieved 25 March 2020.
- ^ Francisco, Thomas Claburn in San. "Google's Grumpy code makes Python Go". www.theregister.com. Archived from the original on 7 March 2021. Retrieved 20 January 2021.
- ^ "GitHub – IronLanguages/ironpython3: Implementation of Python 3.x for .NET Framework that is built on top of the Dynamic Language Runtime". GitHub. Archived from the original on 28 September 2021.
- ^ "IronPython.net /". ironpython.net. Archived from the original on 17 April 2021.
- ^ "Jython FAQ". www.jython.org. Archived from the original on 22 April 2021. Retrieved 22 April 2021.
- ^ Murri, Riccardo (2013). Performance of Python runtimes on a non-numeric scientific code. European Conference on Python in Science (EuroSciPy). arXiv:1404.6388. Bibcode:2014arXiv1404.6388M.
- ^ "The Computer Language Benchmarks Game". Archived from the original on 14 June 2020. Retrieved 30 April 2020.
- ^ a b Warsaw, Barry; Hylton, Jeremy; Goodger, David (13 June 2000). "PEP 1 – PEP Purpose and Guidelines". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 6 June 2020. Retrieved 19 April 2011.
- ^ "PEP 8 – Style Guide for Python Code". Python.org. Archived from the original on 17 April 2019. Retrieved 26 March 2019.
- ^ Cannon, Brett. "Guido, Some Guys, and a Mailing List: How Python is Developed". python.org. Python Software Foundation. Archived from the original on 1 June 2009. Retrieved 27 June 2009.
- ^ "Moving Python's bugs to GitHub [LWN.net]". Archived from the original on 2 October 2022. Retrieved 2 October 2022.
- ^ "Python Developer's Guide – Python Developer's Guide". devguide.python.org. Archived from the original on 9 November 2020. Retrieved 17 December 2019.
- ^ Hughes, Owen (24 May 2021). "Programming languages: Why Python 4.0 might never arrive, according to its creator". TechRepublic. Archived from the original on 14 July 2022. Retrieved 16 May 2022.
- ^ "PEP 602 – Annual Release Cycle for Python". Python.org. Archived from the original on 14 June 2020. Retrieved 6 November 2019.
- ^ "Changing the Python release cadence [LWN.net]". lwn.net. Archived from the original on 6 November 2019. Retrieved 6 November 2019.
- ^ Norwitz, Neal (8 April 2002). "[Python-Dev] Release Schedules (was Stability & change)". Archived from the original on 15 December 2018. Retrieved 27 June 2009.
- ^ a b Aahz; Baxter, Anthony (15 March 2001). "PEP 6 – Bug Fix Releases". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 5 June 2020. Retrieved 27 June 2009.
- ^ "Python Buildbot". Python Developer's Guide. Python Software Foundation. Archived from the original on 5 June 2020. Retrieved 24 September 2011.
- ^ "1. Extending Python with C or C++ – Python 3.9.1 documentation". docs.python.org. Archived from the original on 23 June 2020. Retrieved 14 February 2021.
- ^ "PEP 623 – Remove wstr from Unicode". Python.org. Archived from the original on 5 March 2021. Retrieved 14 February 2021.
- ^ "PEP 634 – Structural Pattern Matching: Specification". Python.org. Archived from the original on 6 May 2021. Retrieved 14 February 2021.
- ^ "Documentation Tools". Python.org. Archived from the original on 11 November 2020. Retrieved 22 March 2021.
- ^ a b "Whetting Your Appetite". The Python Tutorial. Python Software Foundation. Archived from the original on 26 October 2012. Retrieved 20 February 2012.
- ^ "In Python, should I use else after a return in an if block?". Stack Overflow. Stack Exchange. 17 February 2011. Archived from the original on 20 June 2019. Retrieved 6 May 2011.
- ^ Lutz, Mark (2009). Learning Python: Powerful Object-Oriented Programming. O'Reilly Media, Inc. p. 17. ISBN 9781449379322. Archived from the original on 17 July 2017. Retrieved 9 May 2017.
- ^ Fehily, Chris (2002). Python. Peachpit Press. p. xv. ISBN 9780201748840. Archived from the original on 17 July 2017. Retrieved 9 May 2017.
- ^ Lubanovic, Bill (2014). Introducing Python. Sebastopol, CA : O'Reilly Media. p. 305. ISBN 978-1-4493-5936-2. Retrieved 31 July 2023.
- ^ Blake, Troy (18 January 2021). "TIOBE Index for January 2021". Technology News and Information by SeniorDBA. Archived from the original on 21 March 2021. Retrieved 26 February 2021.
- ^ Prechelt, Lutz (14 March 2000). "An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl" (PDF). Archived (PDF) from the original on 3 January 2020. Retrieved 30 August 2013.
- ^ "Quotes about Python". Python Software Foundation. Archived from the original on 3 June 2020. Retrieved 8 January 2012.
- ^ "Organizations Using Python". Python Software Foundation. Archived from the original on 21 August 2018. Retrieved 15 January 2009.
- ^ "Python : the holy grail of programming". CERN Bulletin. CERN Publications (31/2006). 31 July 2006. Archived from the original on 15 January 2013. Retrieved 11 February 2012.
- ^ Shafer, Daniel G. (17 January 2003). "Python Streamlines Space Shuttle Mission Design". Python Software Foundation. Archived from the original on 5 June 2020. Retrieved 24 November 2008.
- ^ "Tornado: Facebook's Real-Time Web Framework for Python – Facebook for Developers". Facebook for Developers. Archived from the original on 19 February 2019. Retrieved 19 June 2018.
- ^ "What Powers Instagram: Hundreds of Instances, Dozens of Technologies". Instagram Engineering. 11 December 2016. Archived from the original on 15 June 2020. Retrieved 27 May 2019.
- ^ "How we use Python at Spotify". Spotify Labs. 20 March 2013. Archived from the original on 10 June 2020. Retrieved 25 July 2018.
- ^ Fortenberry, Tim (17 January 2003). "Industrial Light & Magic Runs on Python". Python Software Foundation. Archived from the original on 6 June 2020. Retrieved 11 February 2012.
- ^ Taft, Darryl K. (5 March 2007). "Python Slithers into Systems". eWeek.com. Ziff Davis Holdings. Archived from the original on 13 August 2021. Retrieved 24 September 2011.
- ^ GitHub – reddit-archive/reddit: historical code from reddit.com., The Reddit Archives, archived from the original on 1 June 2020, retrieved 20 March 2019
- ^ "Usage statistics and market share of Python for websites". 2012. Archived from the original on 13 August 2021. Retrieved 18 December 2012.
- ^ Oliphant, Travis (2007). "Python for Scientific Computing". Computing in Science and Engineering. 9 (3): 10–20. Bibcode:2007CSE.....9c..10O. CiteSeerX 10.1.1.474.6460. doi:10.1109/MCSE.2007.58. S2CID 206457124. Archived from the original on 15 June 2020. Retrieved 10 April 2015.
- ^ Millman, K. Jarrod; Aivazis, Michael (2011). "Python for Scientists and Engineers". Computing in Science and Engineering. 13 (2): 9–12. Bibcode:2011CSE....13b...9M. doi:10.1109/MCSE.2011.36. Archived from the original on 19 February 2019. Retrieved 7 July 2014.
- ^ Science education with SageMath, Innovative Computing in Science Education, archived from the original on 15 June 2020, retrieved 22 April 2019
- ^ "OpenCV: OpenCV-Python Tutorials". docs.opencv.org. Archived from the original on 23 September 2020. Retrieved 14 September 2020.
- ^ Dean, Jeff; Monga, Rajat; et al. (9 November 2015). "TensorFlow: Large-scale machine learning on heterogeneous systems" (PDF). TensorFlow.org. Google Research. Archived (PDF) from the original on 20 November 2015. Retrieved 10 November 2015.
- ^ Piatetsky, Gregory. "Python eats away at R: Top Software for Analytics, Data Science, Machine Learning in 2018: Trends and Analysis". KDnuggets. Archived from the original on 15 November 2019. Retrieved 30 May 2018.
- ^ "Who is using scikit-learn? – scikit-learn 0.20.1 documentation". scikit-learn.org. Archived from the original on 6 May 2020. Retrieved 30 November 2018.
- ^ Jouppi, Norm. "Google supercharges machine learning tasks with TPU custom chip". Google Cloud Platform Blog. Archived from the original on 18 May 2016. Retrieved 19 May 2016.
- ^ "Natural Language Toolkit – NLTK 3.5b1 documentation". www.nltk.org. Archived from the original on 13 June 2020. Retrieved 10 April 2020.
- ^ "Tkinter — Python interface to TCL/Tk". Archived from the original on 18 October 2012. Retrieved 9 June 2023.
- ^ "Python Tkinter Tutorial". 3 June 2020. Archived from the original on 9 June 2023. Retrieved 9 June 2023.
- ^ "Installers for GIMP for Windows – Frequently Asked Questions". 26 July 2013. Archived from the original on 17 July 2013. Retrieved 26 July 2013.
- ^ "jasc psp9components". Archived from the original on 19 March 2008.
- ^ "About getting started with writing geoprocessing scripts". ArcGIS Desktop Help 9.2. Environmental Systems Research Institute. 17 November 2006. Archived from the original on 5 June 2020. Retrieved 11 February 2012.
- ^ CCP porkbelly (24 August 2010). "Stackless Python 2.7". EVE Community Dev Blogs. CCP Games. Archived from the original on 11 January 2014. Retrieved 11 January 2014.
As you may know, EVE has at its core the programming language known as Stackless Python.
- ^ Caudill, Barry (20 September 2005). "Modding Sid Meier's Civilization IV". Sid Meier's Civilization IV Developer Blog. Firaxis Games. Archived from the original on 2 December 2010.
we created three levels of tools ... The next level offers Python and XML support, letting modders with more experience manipulate the game world and everything in it.
- ^ "Python Language Guide (v1.0)". Google Documents List Data API v1.0. Archived from the original on 15 July 2010.
- ^ "Python Setup and Usage". Python Software Foundation. Archived from the original on 17 June 2020. Retrieved 10 January 2020.
- ^ "Immunity: Knowing You're Secure". Archived from the original on 16 February 2009.
- ^ "Core Security". Core Security. Archived from the original on 9 June 2020. Retrieved 10 April 2020.
- ^ "What is Sugar?". Sugar Labs. Archived from the original on 9 January 2009. Retrieved 11 February 2012.
- ^ "4.0 New Features and Fixes". LibreOffice.org. The Document Foundation. 2013. Archived from the original on 9 February 2014. Retrieved 25 February 2013.
- ^ "Gotchas for Python Users". boo.codehaus.org. Codehaus Foundation. Archived from the original on 11 December 2008. Retrieved 24 November 2008.
- ^ Esterbrook, Charles. "Acknowledgements". cobra-language.com. Cobra Language. Archived from the original on 8 February 2008. Retrieved 7 April 2010.
- ^ "Proposals: iterators and generators [ES4 Wiki]". wiki.ecmascript.org. Archived from the original on 20 October 2007. Retrieved 24 November 2008.
- ^ "Frequently asked questions". Godot Engine documentation. Archived from the original on 28 April 2021. Retrieved 10 May 2021.
- ^ Kincaid, Jason (10 November 2009). "Google's Go: A New Programming Language That's Python Meets C++". TechCrunch. Archived from the original on 18 January 2010. Retrieved 29 January 2010.
- ^ Strachan, James (29 August 2003). "Groovy – the birth of a new dynamic language for the Java platform". Archived from the original on 5 April 2007. Retrieved 11 June 2007.
- ^ "Modular Docs - Why Mojo🔥". docs.modular.com. Archived from the original on 5 May 2023. Retrieved 5 May 2023.
Mojo as a member of the Python family [..] Embracing Python massively simplifies our design efforts, because most of the syntax is already specified. [..] we decided that the right long-term goal for Mojo is to provide a superset of Python (i.e. be compatible with existing programs) and to embrace the CPython immediately for long-tail ecosystem enablement. To a Python programmer, we expect and hope that Mojo will be immediately familiar, while also providing new tools for developing systems-level code that enable you to do things that Python falls back to C and C++ for.
- ^ Spencer, Michael (4 May 2023). "What is Mojo Programming Language?". datasciencelearningcenter.substack.com. Archived from the original on 5 May 2023. Retrieved 5 May 2023.
- ^ Yegulalp, Serdar (16 January 2017). "Nim language draws from best of Python, Rust, Go, and Lisp". InfoWorld. Archived from the original on 13 October 2018. Retrieved 7 June 2020.
Nim's syntax is strongly reminiscent of Python's, as it uses indented code blocks and some of the same syntax (such as the way if/elif/then/else blocks are constructed).
- ^ "An Interview with the Creator of Ruby". Linuxdevcenter.com. Archived from the original on 28 April 2018. Retrieved 3 December 2012.
- ^ Lattner, Chris (3 June 2014). "Chris Lattner's Homepage". Chris Lattner. Archived from the original on 22 December 2015. Retrieved 3 June 2014.
I started work on the Swift Programming Language in July of 2010. I implemented much of the basic language structure, with only a few people knowing of its existence. A few other (amazing) people started contributing in earnest late in 2011, and it became a major focus for the Apple Developer Tools group in July 2013 [...] drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.
- ^ Kupries, Andreas; Fellows, Donal K. (14 September 2000). "TIP #3: TIP Format". tcl.tk. Tcl Developer Xchange. Archived from the original on 13 July 2017. Retrieved 24 November 2008.
- ^ Gustafsson, Per; Niskanen, Raimo (29 January 2007). "EEP 1: EEP Purpose and Guidelines". erlang.org. Archived from the original on 15 June 2020. Retrieved 19 April 2011.
- ^ "Swift Evolution Process". Swift Programming Language Evolution repository on GitHub. 18 February 2020. Archived from the original on 27 April 2020. Retrieved 27 April 2020.
원천
- "Python for Artificial Intelligence". Python Wiki. 19 July 2012. Archived from the original on 1 November 2012. Retrieved 3 December 2012.
- Paine, Jocelyn, ed. (August 2005). "AI in Python". AI Expert Newsletter. Amzi!. Archived from the original on 26 March 2012. Retrieved 11 February 2012.
- "PyAIML 0.8.5 : Python Package Index". Pypi.python.org. Retrieved 17 July 2013.
- Russell, Stuart J. & Norvig, Peter (2009). Artificial Intelligence: A Modern Approach (3rd ed.). Upper Saddle River, NJ: Prentice Hall. ISBN 978-0-13-604259-4.
추가읽기
- Downey, Allen B. (May 2012). Think Python: How to Think Like a Computer Scientist (version 1.6.6 ed.). Cambridge University Press. ISBN 978-0-521-72596-5.
- Hamilton, Naomi (5 August 2008). "The A-Z of Programming Languages: Python". Computerworld. Archived from the original on 29 December 2008. Retrieved 31 March 2010.
- Lutz, Mark (2013). Learning Python (5th ed.). O'Reilly Media. ISBN 978-0-596-15806-4.
- Summerfield, Mark (2009). Programming in Python 3 (2nd ed.). Addison-Wesley Professional. ISBN 978-0-321-68056-3.
- Ramalho, Luciano (May 2022). Fluent Python. O'Reilly Media. ISBN 978-1-4920-5632-4.