“Python library”에는 여러 종류의 구성 요소가 포함되어 있습니다.
여기에는 일반적으로 숫자 및 목록과 같은 언어의 “핵심” 부분으로 간주되는 데이터 유형이 포함됩니다. 이러한 유형의 경우 Python 언어 코어는 리터럴의 형식을 정의하고 의미 체계에 일부 제약을 두지만 의미 체계를 완전히 정의하지는 않습니다. (한편, 언어 핵심은 철자 및 연산자의 우선 순위와 같은 구문 속성을 정의합니다.)
라이브러리에는 내장 함수와 예외도 포함되어 있습니다. import 문 없이도 모든 Python 코드에서 사용할 수 있는 개체입니다. 이들 중 일부는 핵심 언어에 의해 정의되지만 대부분은 핵심 의미론에 필수적이지 않으며 여기서만 설명됩니다.
그러나 대부분의 라이브러리는 모듈 모음으로 구성됩니다. 이 컬렉션을 해부하는 방법에는 여러 가지가 있습니다. 일부 모듈은 C로 작성되었으며 Python 인터프리터에 내장되어 있습니다. 다른 것들은 Python으로 작성되고 소스 형식으로 가져옵니다. 일부 모듈은 스택 추적 인쇄와 같이 Python에 매우 특정한 인터페이스를 제공합니다. 일부는 특정 하드웨어에 대한 액세스와 같이 특정 운영 체제에 특정한 인터페이스를 제공합니다. 다른 것들은 World Wide Web과 같은 특정 응용 프로그램 도메인에 특정한 인터페이스를 제공합니다. 일부 모듈은 Python의 모든 버전과 포트에서 사용할 수 있습니다. 다른 것들은 기본 시스템이 지원하거나 요구할 때만 사용할 수 있습니다. 그러나 다른 것들은 Python이 컴파일되고 설치될 때 특정 구성 옵션이 선택된 경우에만 사용할 수 있습니다.
이 설명서는 “안팎으로” 구성되어 있습니다. 먼저 내장 함수, 데이터 유형 및 예외를 설명하고 마지막으로 관련 모듈의 장으로 그룹화된 모듈을 설명합니다.
즉, 이 설명서를 처음부터 읽기 시작하고 지루해지면 다음 장으로 건너뛰면 Python 라이브러리에서 지원하는 사용 가능한 모듈 및 응용 분야에 대한 합리적인 개요를 얻을 수 있습니다. 물론 소설처럼 읽을 필요는 없습니다. 목차(매뉴얼 앞)를 찾아보거나(매뉴얼 뒤) 색인에서 특정 기능, 모듈 또는 용어를 찾을 수도 있습니다. 그리고 마지막으로 임의의 주제에 대해 배우는 것을 좋아한다면 임의의 페이지 번호(모듈 임의 참조)를 선택하고 한두 개의 섹션을 읽으십시오. 이 설명서의 섹션을 읽는 순서에 관계없이 설명서의 나머지 부분에서 이 자료에 익숙하다고 가정하므로 내장 함수 장부터 시작하는 것이 좋습니다.
쇼를 시작하자!
Notes on availability
- “가용성: Unix” 참고는 이 기능이 Unix 시스템에서 일반적으로 발견됨을 의미합니다. 특정 운영 체제에서의 존재에 대해 주장하지 않습니다.
- 별도로 명시되지 않은 경우 “가용성: Unix”라고 주장하는 모든 기능은 Unix 코어를 기반으로 하는 macOS에서 지원됩니다.
- 가용성 메모에 최소 커널 버전과 최소 libc 버전이 모두 포함된 경우 두 조건이 모두 충족되어야 합니다. 예를 들어 가용성: Linux >= 3.17 with glibc >= 2.27이 있는 기능에는 Linux 3.17 이상과 glibc 2.27 이상이 모두 필요합니다.
WebAssembly platforms
WebAssembly 플랫폼 wasm32-emscripten(Emscripten) 및 wasm32-wasi(WASI)는 POSIX API의 하위 집합을 제공합니다. WebAssembly 런타임 및 브라우저는 샌드박싱되며 호스트 및 외부 리소스에 대한 액세스가 제한됩니다. 프로세스, 스레딩, 네트워킹, 신호 또는 기타 형태의 IPC(프로세스 간 통신)를 사용하는 Python 표준 라이브러리 모듈은 사용할 수 없거나 다른 Unix 계열 시스템에서처럼 작동하지 않을 수 있습니다. 파일 I/O, 파일 시스템 및 Unix 권한 관련 기능도 제한됩니다. Emscripten은 차단 I/O를 허용하지 않습니다. sleep()과 같은 다른 차단 작업은 브라우저 이벤트 루프를 차단합니다.
WebAssembly 플랫폼에서 Python의 속성 및 동작은 Emscripten-SDK 또는 WASI-SDK 버전, WASM 런타임(브라우저, NodeJS, wasmtime) 및 Python 빌드 시간 플래그에 따라 다릅니다. WebAssembly, Emscripten 및 WASI는 진화하는 표준입니다. 네트워킹과 같은 일부 기능은 향후 지원될 수 있습니다.
브라우저의 Python의 경우 사용자는 Pyodide 또는 PyScript를 고려해야 합니다. PyScript는 CPython 및 Emscripten 위에 구축된 Pyodide 위에 구축되었습니다. Pyodide는 JavaScript의 XMLHttpRequest 및 Fetch API를 통해 제한된 네트워킹 기능뿐만 아니라 브라우저의 JavaScript 및 DOM API에 대한 액세스를 제공합니다.
- 프로세스 관련 API를 사용할 수 없거나 항상 오류와 함께 실패합니다. 여기에는 새 프로세스(fork(), execve())를 생성하거나 프로세스를 기다리거나(waitpid()) 신호를 보내거나(kill()) 프로세스와 상호 작용하는 API가 포함됩니다. 하위 프로세스는 가져올 수 있지만 작동하지 않습니다.
- 소켓 모듈을 사용할 수 있지만 제한적이며 다른 플랫폼과 다르게 작동합니다. Emscripten에서 소켓은 항상 비차단이며 WebSocket을 통해 TCP를 프록시하려면 서버에 추가 JavaScript 코드와 도우미가 필요합니다. 자세한 내용은 Emscripten 네트워킹을 참조하십시오. WASI 스냅샷 미리보기 1은 기존 파일 디스크립터의 소켓만 허용합니다.
- 일부 함수는 아무 작업도 수행하지 않고 항상 하드코딩된 값을 반환하는 스텁입니다.
- 파일 설명자, 파일 권한, 파일 소유권 및 링크와 관련된 기능이 제한되며 일부 작업을 지원하지 않습니다. 예를 들어 WASI는 절대 파일 이름을 사용하는 심볼릭 링크를 허용하지 않습니다.