Python

용어집

>>>

대화형 셸의 기본 파이썬 프롬프트. 인터프리터에서 대화형으로 실행될 수 있는 코드 예에서 자주 볼 수 있습니다.

...

다음과 같은 것들을 가리킬 수 있습니다:

  • 들여쓰기 된 코드 블록의 코드를 입력할 때, 쌍을 이루는 구분자 (괄호, 대괄호, 중괄호) 안에 코드를 입력할 때, 데코레이터 지정 후의 대화형 셸의 기본 파이썬 프롬프트.

  • Ellipsis 객체의 말줄임표 형태입니다.

abstract base class (추상 베이스 클래스)

추상 베이스 클래스는 hasattr() 같은 다른 테크닉들이 불편하거나 미묘하게 잘못된 (예를 들어, 매직 메서드) 경우, 인터페이스를 정의하는 방법을 제공함으로써 덕 타이핑 을 보완합니다. ABC는 가상 서브 클래스를 도입하는데, 클래스를 계승하지 않으면서도 isinstance()issubclass() 에 의해 감지될 수 있는 클래스들입니다; abc 모듈 설명서를 보세요. 파이썬에는 많은 내장 ABC 들이 따라오는데 다음과 같은 것들이 있습니다: 자료 구조 (collections.abc 모듈에서), 숫자 (numbers 모듈에서), 스트림 (io 모듈에서), 임포트 파인더와 로더 (importlib.abc 모듈에서). abc 모듈을 사용해서 자신만의 ABC를 만들 수도 있습니다.

annotate function (어노테이트 함수)

객체의 어노테이션 을 가져오기 위해 호출할 수 있는 콜러블입니다. 어노테이트 함수는 대개 함수 이며, 함수, 클래스, 모듈의 __annotate__ 어트리뷰트로 자동 생성됩니다. 어노테이트 함수는 평가 함수 의 부분 집합입니다.

annotation (어노테이션)

관습에 따라 형 힌트 로 사용되는 변수, 클래스 어트리뷰트 또는 함수 매개변수 나 반환 값과 연결된 레이블입니다.

지역 변수의 어노테이션은 런타임에 접근할 수 없지만, 전역 변수, 클래스 속성 및 함수의 어노테이션은 각각 모듈, 클래스, 함수에서 annotationlib.get_annotations() 를 호출하여 가져올 수 있습니다.

See variable annotation, function annotation, PEP 484, PEP 526, and PEP 649, which describe this functionality. Also see 어노테이션 모범 사례 for best practices on working with annotations.

argument (인자)

함수를 호출할 때 함수 (또는 메서드) 로 전달되는 값. 두 종류의 인자가 있습니다:

  • 키워드 인자 (keyword argument): 함수 호출 때 식별자가 앞에 붙은 인자 (예를 들어, name=) 또는 ** 를 앞에 붙인 딕셔너리로 전달되는 인자. 예를 들어, 다음과 같은 complex() 호출에서 35 는 모두 키워드 인자입니다:

    complex(real=3, imag=5)
    complex(**{'real': 3, 'imag': 5})
    
  • 위치 인자 (positional argument): 키워드 인자가 아닌 인자. 위치 인자들은 인자 목록의 처음에 나오거나 이터러블 의 앞에 * 를 붙여 전달할 수 있습니다. 예를 들어, 다음과 같은 호출에서 35 는 모두 위치 인자입니다.

    complex(3, 5)
    complex(*(3, 5))
    

인자는 함수 바디의 이름 붙은 지역 변수에 대입됩니다. 이 대입에 적용되는 규칙들에 대해서는 호출 절을 보세요. 문법적으로, 어떤 표현식이건 인자로 사용될 수 있습니다; 구해진 값이 지역 변수에 대입됩니다.

용어집의 매개변수 항목과 FAQ 질문 인자와 매개변수의 차이PEP 362도 보세요.

asynchronous context manager (비동기 컨텍스트 관리자)

__aenter__()__aexit__() 메서드를 정의함으로써 async with 문에서 보이는 환경을 제어하는 객체. PEP 492로 도입되었습니다.

asynchronous generator (비동기 제너레이터)

Informally used to mean either an asynchronous generator function or an asynchronous generator iterator, depending on context. The formal terms asynchronous generator function and asynchronous generator iterator are uncommon in practice; “asynchronous generator” alone is almost always sufficient.

asynchronous generator function (비동기 제너레이터 함수)

A function which returns an asynchronous generator iterator. It looks like a coroutine function defined with async def except that it contains yield expressions for producing a series of values usable in an async for loop. See PEP 525.

비동기 제너레이터 함수는 await 표현식과, async for 문과, async with 문을 포함할 수 있습니다.

asynchronous generator iterator (비동기 제너레이터 이터레이터)

An object created by an asynchronous generator function.

비동기 이터레이터 인데 __anext__() 를 호출하면 어웨이터블 객체를 돌려주고, 이것은 다음 yield 표현식 까지 비동기 제너레이터 함수의 바디를 실행합니다.

yield는 일시적으로 처리를 중단하고, (지역 변수들과 대기 중인 try-문들을 포함하는) 실행 상태를 기억합니다. 비동기 제너레이터 이터레이터__anext__() 가 돌려주는 또 하나의 어웨이터블로 재개되면, 떠난 곳으로 복귀합니다. PEP 492PEP 525를 보세요.

asynchronous iterable (비동기 이터러블)

async for 문에서 사용될 수 있는 객체. __aiter__() 메서드는 비동기 이터레이터 를 돌려줘야 합니다. PEP 492 로 도입되었습니다.

asynchronous iterator (비동기 이터레이터)

__aiter__()__anext__() 메서드를 구현하는 객체. __anext__()어웨이터블 객체를 돌려줘야 합니다. async forStopAsyncIteration 예외가 발생할 때까지 비동기 이터레이터의 __anext__() 메서드가 돌려주는 어웨이터블을 풉니다. PEP 492로 도입되었습니다.

atomic operation (원자적 연산)

단 하나의 분할 불가능한 단계로 실행되는 것처럼 보이는 작업입니다. 다른 스레드가 해당 작업을 절반만 수행된 상태로 관찰할 수 없으며, 그 효과가 한꺼번에 나타납니다. 파이썬은 상위 수준의 문장이 원자적(atomic)임을 보장하지 않습니다(예를 들어, x += 1 은 여러 바이트 코드 연산을 수행하며 원자적이지 않습니다). 원자성은 명시적으로 문서화된 경우에만 보장됩니다. 또한 경쟁 상태데이터 경쟁 을 참조하십시오.

attached thread state (연결된 스레드 상태)

현재 OS 스레드에 대해 활성화된 스레드 상태 입니다.

When a thread state is attached, the OS thread has access to the full Python C API and can safely invoke the bytecode interpreter.

함수에서 명시적으로 달리 언급하지 않는 한, 연결된 스레드 상태 없이 C API를 호출하려고 하면 치명적인 오류나 정의되지 않은 동작이 발생합니다. 스레드 상태는 사용자가 C API를 통해 명시적으로 연결하거나 해제할 수 있으며, 실행 중에 차단되는 C 호출이나 바이트 코드 인터프리터에 의해 암시적으로 처리되기도 합니다.

대부분의 파이썬 빌드에서 스레드 상태가 연결되어 있다는 것은 호출자가 현재 인터프리터에 대한 GIL 을 보유하고 있음을 의미하므로, 어느 한 시점에 단 하나의 OS 스레드만 연결된 스레드 상태를 가질 수 있습니다. 파이썬의 멀티스레딩 빌드 에서는 여러 스레드가 동시에 연결된 스레드 상태를 보유할 수 있으며, 이를 통해 바이트 코드 인터프리터가 진정한 병렬성을 확보할 수 있습니다.

attribute (어트리뷰트)

흔히 점표현식을 사용하는 이름으로 참조되는 객체와 결합한 값. 예를 들어, 객체 o가 어트리뷰트 a를 가지면, o.a처럼 참조됩니다.

객체가 허용하는 경우, 예를 들어 setattr() 을 사용하여 식별자 로 정의되지 않은 이름을 가진 속성을 부여할 수 있습니다. 이러한 속성은 점(.)으로 구분된 표현식으로는 접근할 수 없으며, 대신 getattr() 을 통해 가져와야 합니다.

awaitable (어웨이터블)

await 표현식에 사용할 수 있는 객체. 코루틴 이나 __await__() 메서드를 가진 객체가 될 수 있습니다. PEP 492를 보세요.

BDFL

자비로운 종신 독재자 (Benevolent Dictator For Life), 즉 Guido van Rossum, 파이썬의 창시자.

binary file (바이너리 파일)

바이트열류 객체들을 읽고 쓸 수 있는 파일 객체. 바이너리 파일의 예로는 바이너리 모드 ('rb', 'wb' 또는 'rb+') 로 열린 파일, sys.stdin.buffer, sys.stdout.buffer, io.BytesIOgzip.GzipFile 의 인스턴스를 들 수 있습니다.

str 객체를 읽고 쓸 수 있는 파일 객체에 대해서는 텍스트 파일 도 참조하세요.

borrowed reference (빌린 참조)

파이썬 C API에서 빌린 참조(borrowed reference)는 객체에 대한 참조를 의미하며, 해당 객체를 사용하는 코드가 그 참조를 소유하지 않는 경우입니다. 객체가 파괴되면 댕글링 포인터가 됩니다. 예를 들어, 가비지 컬렉션이 객체에 대한 마지막 강한 참조 를 제거하여 객체를 파괴할 수 있습니다.

Calling Py_INCREF() on the borrowed reference is recommended to convert it to a strong reference in-place, except when the object cannot be destroyed before the last usage of the borrowed reference. The Py_NewRef() function can be used to create a new strong reference.

bytes-like object (바이트열류 객체)

버퍼 프로토콜 를 지원하고 C-연속 버퍼를 익스포트 할 수 있습니다. 여러 공통 memoryview 객체들은 물론이고 bytes, bytearray, array.array 객체들을 포함합니다. 바이트열류 객체들은 바이너리 데이터를 다루는 여러 가지 연산들에 사용될 수 있습니다; 압축, 바이너리 파일로 저장, 소켓을 통한 전송 같은 것들이 있습니다.

어떤 연산들은 바이너리 데이터가 가변적일 필요가 있습니다. 이런 경우에 설명서는 종종 “읽고-쓰기 바이트열류 객체”라고 표현합니다. 가변 버퍼 객체의 예로는 bytearraybytearraymemoryview 가 있습니다. 다른 연산들은 바이너리 데이터가 불변 객체 (“읽기 전용 바이트열류 객체”)에 저장되도록 요구합니다; 이런 것들의 예로는 bytesbytes 객체의 memoryview 가 있습니다.

bytecode (바이트 코드)

파이썬 소스 코드는 바이트 코드로 컴파일되는데, CPython 인터프리터에서 파이썬 프로그램의 내부 표현입니다. 바이트 코드는 .pyc 파일에 캐시 되어, 같은 파일을 두 번째 실행할 때 더 빨라지게 만듭니다 (소스에서 바이트 코드로의 재컴파일을 피할 수 있습니다). 이 “중간 언어” 는 각 바이트 코드에 대응하는 기계를 실행하는 가상 기계 에서 실행된다고 말합니다. 바이트 코드는 서로 다른 파이썬 가상 기계에서 작동할 것으로 기대하지도, 파이썬 배포 간에 안정적이지도 않다는 것에 주의해야 합니다.

바이트 코드 명령어들의 목록은 dis 모듈 설명서에 나옵니다.

callable (콜러블)

콜러블은 다음과 같은 구문으로 호출할 수 있는 객체입니다(인자 집합 포함 가능, 인자 참조).

callable(argument1, argument2, argumentN)

함수 및 확장된 개념인 메서드 는 콜러블입니다. __call__() 메서드를 구현하는 클래스의 인스턴스도 콜러블입니다.

callback (콜백)

인자로 전달되는 미래의 어느 시점에서 실행될 서브 루틴 함수.

class (클래스)

사용자 정의 객체들을 만들기 위한 주형. 클래스 정의는 보통 클래스의 인스턴스를 대상으로 연산하는 메서드 정의들을 포함합니다.

class variable (클래스 변수)

클래스에서 정의되고 클래스 수준 (즉, 클래스의 인스턴스에서가 아니라) 에서만 수정되는 변수.

closure variable (클로저 변수)

런타임에 전역이나 내장 네임스페이스에서 해결되는 것이 아니라 외부 범위(outer scope)에서 정의된, 중첩된 범위 로부터 참조되는 자유 변수 입니다. 쓰기 권한을 허용하기 위해 nonlocal 키워드로 명시적으로 정의하거나, 읽기 전용인 경우 암시적으로 정의될 수 있습니다.

예를 들어, 다음 코드의 inner 함수에서 xprint 모두 자유 변수 이지만, x 만이 클로저 변수 입니다.

def outer():
    x = 0
    def inner():
        nonlocal x
        x += 1
        print(x)
    return inner

codeobject.co_freevars 어트리뷰스(이름에도 불구하고 모든 참조된 자유 변수가 아니라 클로저 변수의 이름만 포함함) 때문에, 의도하는 의미가 구체적으로 클로저 변수를 지칭할 때도 더 일반적인 개념인 자유 변수 라는 용어가 사용되기도 합니다.

complex number (복소수)

익숙한 실수 시스템의 확장인데, 모든 숫자가 실수부와 허수부의 합으로 표현됩니다. 허수부는 실수에 허수 단위(-1의 제곱근)를 곱한 것인데, 종종 수학에서는 i로, 공학에서는 j로 표기합니다. 파이썬은 후자의 표기법을 쓰는 복소수를 기본 지원합니다; 허수부는 j 접미사를 붙여서 표기합니다, 예를 들어, 3+1j. math 모듈의 복소수 버전이 필요하면, cmath를 사용합니다. 복소수의 활용은 꽤 수준 높은 수학적 기능입니다. 필요하다고 느끼지 못한다면, 거의 확실히 무시해도 좋습니다.

concurrency (동시성)

컴퓨터 프로그램이 동시에 여러 작업을 수행할 수 있는 능력입니다. 파이썬은 다양한 형태의 병렬성을 활용하는 프로그램을 작성하기 위한 라이브러리를 제공합니다. asyncio 는 비동기 태스크 및 코루틴 처리를 위한 라이브러리이고, threading 은 운영체제 스레드에 접근하게 해주며, multiprocessing 은 운영체제 프로세스에 접근하게 해줍니다. 멀티코어 프로세서는 서로 다른 CPU 코어에서 스레드와 프로세스를 동시에 실행할 수 있습니다(성능을 위한 병렬성 참조).

concurrent modification (동시 수정)

여러 스레드가 동시에 공유 데이터를 수정하는 경우입니다. 적절한 동기화 없는 동시 수정은 경쟁 상태 를 유발할 수 있으며, 데이터 경쟁 또는 데이터 손상, 혹은 둘 다를 초래할 수 있습니다.

context (컨텍스트)

이 용어는 사용되는 위치와 방법에 따라 의미가 달라집니다. 일반적인 의미들은 다음과 같습니다.

context management protocol (컨텍스트 관리 프로토콜)

with 문에 의해 호출되는 __enter__()__exit__() 메서드입니다. PEP 343 을 참조하십시오.

context manager (컨텍스트 관리자)

컨텍스트 관리 프로토콜을 구현하고 with 문에서 보이는 환경을 제어하는 객체. PEP 343을 참조하십시오.

context variable (컨텍스트 변수)

그 값이 어떤 컨텍스트가 현재 컨텍스트 인지에 따라 달라지는 변수입니다. 값은 contextvars.ContextVar 객체를 통해 접근합니다. 컨텍스트 변수는 주로 동시 비동기 태스크 간의 상태를 격리하는 데 사용됩니다.

contiguous (연속)

버퍼는 정확히 C-연속(C-contiguous)이거나 포트란 연속(Fortran contiguous)일 때 연속이라고 여겨집니다. 영차원 버퍼는 C-연속이면서 포트란 연속입니다. 일차원 배열에서, 항목들은 서로에 인접하고, 0에서 시작하는 오름차순 인덱스의 순서대로 메모리에 배치되어야 합니다. 다차원 C-연속 배열에서, 메모리 주소의 순서대로 항목들을 방문할 때 마지막 인덱스가 가장 빨리 변합니다. 하지만, 포트란 연속 배열에서는, 첫 번째 인덱스가 가장 빨리 변합니다.

coroutine (코루틴)

코루틴은 서브루틴의 더 일반화된 형태입니다. 서브루틴은 한 지점에서 진입하고 다른 지점에서 탈출합니다. 코루틴은 여러 다른 지점에서 진입하고, 탈출하고, 재개할 수 있습니다. 이것들은 async def 문으로 구현할 수 있습니다. PEP 492를 보세요.

coroutine function (코루틴 함수)

코루틴 객체를 돌려주는 함수. 코루틴 함수는 async def 문으로 정의될 수 있고, awaitasync forasync with 키워드를 포함할 수 있습니다. 이것들은 PEP 492 에 의해 도입되었습니다.

CPython

파이썬 프로그래밍 언어의 규범적인 구현인데, python.org에서 배포됩니다. 이 구현을 Jython 이나 IronPython 과 같은 다른 것들과 구별할 필요가 있을 때 용어 “CPython” 이 사용됩니다.

current context (현재 컨텍스트)

현재 ContextVar 객체들이 컨텍스트 변수 의 값을 가져오거나 설정하는 데 사용하는 컨텍스트 (contextvars.Context 객체)입니다. 각 스레드는 고유의 현재 컨텍스트를 가집니다. 비동기 태스크 실행을 위한 프레임워크(예: asyncio)는 각 태스크를 컨텍스트와 연관시키며, 해당 태스크가 시작되거나 재개될 때마다 그 컨텍스트가 현재 컨텍스트가 됩니다.

cyclic isolate (순환 격리)

참조 순환 내에서 서로를 참조하지만 그룹 외부의 객체로부터는 참조되지 않는 하나 이상의 객체로 구성된 하위 그룹입니다. 순환 가비지 수거기 의 목적은 이러한 그룹을 식별하고 참조 순환을 끊어 메모리를 회수하는 것입니다.

data race (데이터 경합)

여러 스레드가 동시에 동일한 메모리 위치에 접근하고, 그 중 최소 하나 이상의 접근이 쓰기이며, 스레드들이 접근을 제어하기 위한 어떠한 동기화도 사용하지 않는 상황입니다. 데이터 경쟁은 비결정적 동작을 초래하며 데이터 손상을 일으킬 수 있습니다. 잠금 및 다른 동기화 프리미티브 를 적절히 사용하면 데이터 경쟁을 방지할 수 있습니다. 데이터 경쟁은 네이티브 코드에서만 발생할 수 있지만, 해당 네이티브 코드 가 파이썬 API에 노출될 수 있음에 유의하십시오. 또한 경쟁 상태스레드 안전 을 참조하십시오.

deadlock (교착 상태)

둘 이상의 태스크(스레드, 프로세스 또는 코루틴)가 서로 자원을 해제하거나 작업을 완료할 때까지 무기한 기다려 결국 어떤 것도 진행하지 못하게 되는 상황입니다. 예를 들어, 스레드 A가 록 1을 보유하고 록 2를 기다리는 동안, 스레드 B가 록 2를 보유하고 록 1을 기다린다면 두 스레드는 모두 무기한 대기하게 됩니다. 파이썬에서 이러한 상황은 주로 서로 충돌하는 순서로 여러 개의 록을 획득하거나, 순환적인 join/await 의존성으로 인해 발생합니다. 데드락은 여러 개의 잠금 을 항상 일관된 순서로 획득함으로써 방지할 수 있습니다. 또한 잠금재진입 가능 을 참조하십시오.

decorator (데코레이터)

다른 함수를 반환하는 함수이며, 대개 @wrapper 구문을 사용하여 함수 변환으로 적용됩니다. 데코레이터의 흔한 예로는 @classmethod@staticmethod 가 있습니다.

데코레이터 문법은 단지 편의 문법일 뿐입니다. 다음 두 함수 정의는 의미상으로 동등합니다:

def f(arg):
    ...
f = staticmethod(f)

@staticmethod
def f(arg):
    ...

같은 개념이 클래스에도 존재하지만, 덜 자주 쓰입니다. 데코레이터에 대한 더 자세한 내용은 함수 정의클래스 정의 의 설명서를 보면 됩니다.

descriptor (디스크립터)

메서드 __get__() 이나 __set__() 이나 __delete__()를 정의하는 객체. 클래스 어트리뷰트가 디스크립터일 때, 어트리뷰트 조회는 특별한 연결 작용을 일으킵니다. 보통, a.b를 읽거나, 쓰거나, 삭제하는데 사용할 때, a의 클래스 딕셔너리에서 b 라고 이름 붙여진 객체를 찾습니다. 하지만 b가 디스크립터면, 해당하는 디스크립터 메서드가 호출됩니다. 디스크립터를 이해하는 것은 파이썬에 대한 깊은 이해의 열쇠인데, 함수, 메서드, 프로퍼티, 클래스 메서드, 스태틱 메서드, 슈퍼 클래스 참조 등의 많은 기능의 기초를 이루고 있기 때문입니다.

디스크립터의 메서드들에 대한 자세한 내용은 디스크립터 구현하기디스크립터 사용법 안내서에 나옵니다.

dictionary (딕셔너리)

임의의 키를 값에 대응시키는 연관 배열 (associative array). 키는 __hash__()__eq__() 메서드를 갖는 모든 객체가 될 수 있습니다. 펄에서 해시라고 부릅니다.

dictionary comprehension (딕셔너리 컴프리헨션)

이터러블에 있는 요소 전체나 일부를 처리하고 결과를 담은 딕셔너리를 반환하는 간결한 방법. results = {n: n ** 2 for n in range(10)}은 값 n ** 2에 매핑된 키 n을 포함하는 딕셔너리를 생성합니다. 컴프리헨션을 참조하십시오.

dictionary view (딕셔너리 뷰)

dict.keys(), dict.values(), dict.items() 메서드가 돌려주는 객체들을 딕셔너리 뷰라고 부릅니다. 이것들은 딕셔너리 항목들에 대한 동적인 뷰를 제공하는데, 딕셔너리가 변경될 때, 뷰가 이 변화를 반영한다는 뜻입니다. 딕셔너리 뷰를 완전한 리스트로 바꾸려면 list(dictview)를 사용하면 됩니다. 딕셔너리 뷰 객체를 보세요.

docstring (독스트링)

클래스, 함수, 모듈에서 첫 번째 표현식으로 나타나는 문자열 리터럴. 스위트가 실행될 때는 무시되지만, 컴파일러에 의해 인지되어 둘러싼 클래스, 함수, 모듈의 __doc__ 어트리뷰트로 삽입됩니다. 인트로스펙션을 통해 사용할 수 있으므로, 객체의 설명서를 위한 규범적인 장소입니다.

duck-typing (덕 타이핑)

올바른 인터페이스를 가졌는지 판단하는데 객체의 형을 보지 않는 프로그래밍 스타일; 대신, 단순히 메서드나 어트리뷰트가 호출되거나 사용됩니다 (“오리처럼 보이고 오리처럼 꽥꽥댄다면, 그것은 오리다.”) 특정한 형 대신에 인터페이스를 강조함으로써, 잘 설계된 코드는 다형적인 치환을 허락함으로써 유연성을 개선할 수 있습니다. 덕 타이핑은 type() 이나 isinstance() 을 사용한 검사를 피합니다. (하지만, 덕 타이핑이 추상 베이스 클래스 로 보완될 수 있음에 유의해야 합니다.) 대신에, hasattr() 검사나 EAFP 프로그래밍을 씁니다.

dunder (던더)

특수 메서드 에 대해 이야기할 때 사용하는 “더블 언더스코어(double underscore)”의 비공식적인 약칭입니다. 예를 들어, `__init__ 은 종종 “dunder init”이라고 발음됩니다.

EAFP

허락보다는 용서를 구하기가 쉽다 (Easier to ask for forgiveness than permission). 이 흔히 볼 수 있는 파이썬 코딩 스타일은, 올바른 키나 어트리뷰트의 존재를 가정하고, 그 가정이 틀리면 예외를 잡습니다. 이 깔끔하고 빠른 스타일은 많은 tryexcept 문의 존재로 특징지어집니다. 이 테크닉은 C와 같은 다른 많은 언어에서 자주 사용되는 LBYL 스타일과 대비됩니다.

evaluate function (평가 함수)

객체의 지연 평가된 어트리뷰스(예를 들어, type 문으로 생성된 타입 별칭의 값)를 평가하기 위해 호출할 수 있는 함수입니다.

expression (표현식)

어떤 값으로 구해질 수 있는 문법적인 조각. 다른 말로 표현하면, 표현식은 리터럴, 이름, 어트리뷰트 액세스, 연산자, 함수들과 같은 값을 돌려주는 표현 요소들을 쌓아 올린 것입니다. 다른 많은 언어와 대조적으로, 모든 언어 구성물들이 표현식인 것은 아닙니다. while처럼, 표현식으로 사용할 수 없는 문장 들이 있습니다. 대입 또한 문장이고, 표현식이 아닙니다.

extension module (확장 모듈)

C 나 C++로 작성된 모듈인데, 파이썬의 C API를 사용해서 핵심이나 사용자 코드와 상호 작용합니다.

f-string (f-문자열)
f-strings (f-문자열)

f 또는 F 가 접두사로 붙은 문자열 리터럴은 흔히 “f-스트링”이라 불리며, 이는 포맷 문자열 리터럴 의 약칭입니다. 또한 PEP 498 을 참조하십시오.

file object (파일 객체)

하부 자원에 대해 파일 지향적 API(read()write() 같은 메서드들)를 드러내는 객체. 만들어진 방법에 따라, 파일 객체는 실제 디스크 상의 파일이나 다른 저장 장치나 통신 장치 (예를 들어, 표준 입출력, 인-메모리 버퍼, 소켓, 파이프, 등등)에 대한 액세스를 중계할 수 있습니다. 파일 객체는 파일류 객체 (file-like objects)스트림 (streams) 이라고도 불립니다.

실제로는 세 부류의 파일 객체들이 있습니다. 날(raw) 바이너리 파일, 버퍼드(buffered) 바이너리 파일, 텍스트 파일. 이들의 인터페이스는 io 모듈에서 정의됩니다. 파일 객체를 만드는 규범적인 방법은 open() 함수를 쓰는 것입니다.

file-like object (파일류 객체)

파일 객체 의 비슷한 말.

filesystem encoding and error handler (파일시스템 인코딩과 에러 처리기)

파이썬이 운영체제로부터 바이트를 디코딩하고 유니코드를 운영체제로 인코딩할 때 사용하는 인코딩 및 에러 처리기입니다.

파일 시스템 인코딩은 128 미만의 모든 바이트를 성공적으로 디코딩함을 보장해야 합니다. 파일 시스템 인코딩이 이 보증을 제공하지 못할 경우, API 함수는 UnicodeError 를 발생시킬 수 있습니다.

sys.getfilesystemencoding()sys.getfilesystemencodeerrors() 함수를 사용하여 파일 시스템 인코딩과 에러 처리기를 가져올 수 있습니다.

파일시스템 인코딩 및 에러 처리기 는 파이썬 시작 시 PyConfig_Read() 함수에 의해 구성됩니다. PyConfigfilesystem_encodingfilesystem_errors 멤버를 참조하십시오.

로케일 인코딩 도 보세요.

finder (파인더)

임포트될 모듈을 위한 로더 를 찾으려고 시도하는 객체.

두 종류의 파인더가 있습니다: sys.meta_path 와 함께 사용하는 메타 경로 파인더sys.path_hooks 과 함께 사용하는 경로 엔트리 파인더.

더 자세한 내용은 파인더(finder)와 로더(loader)importlib를 참조하십시오.

floor division (정수 나눗셈)

가장 가까운 정수로 내림하는 수학적 나눗셈. 정수 나눗셈 연산자는 // 다. 예를 들어, 표현식 11 // 4 의 값은 2가 되지만, 실수 나눗셈은 2.75를 돌려줍니다. (-11) // 4-2.75내림-3이 됨에 유의해야 합니다. PEP 238을 보세요.

free threading (자유 스레딩)

동일한 인터프리터 내에서 여러 스레드가 파이썬 바이트코드를 동시에 실행할 수 있는 스레딩 모델입니다. 이는 한 번에 하나의 스레드만 파이썬 바이트코드를 실행하도록 허용하는 전역 인터프리터 록 과 대비됩니다. 자세한 내용은 PEP 703 을 참조하십시오.

free-threaded build (자유 스레딩 빌드)

컴파일 전 --disable-gil 옵션을 사용하여 설정된, 자유 스레딩 을 지원하는 CPython 빌드입니다.

무료 스레딩(free threading)에 대한 Python 지원 를 참조하십시오.

free variable (자유 변수)

형식적으로 언어 실행 모델 에 정의된 바와 같이, 자유 변수(free variable)는 네임스페이스 내에서 사용되지만 해당 네임스페이스의 지역 변수가 아닌 모든 변수를 의미합니다. 예시는 클로저 변수 를 참조하십시오. 실무적으로는 codeobject.co_freevars 속성의 이름 때문에 이 용어가 때때로 클로저 변수 의 동의어로도 사용됩니다.

function (함수)

호출자에게 어떤 값을 돌려주는 일련의 문장들. 없거나 그 이상의 인자 가 전달될 수 있는데, 바디의 실행에 사용될 수 있습니다. 매개변수메서드함수 정의 섹션도 보세요.

function annotation (함수 어노테이션)

함수 매개변수나 반환 값의 어노테이션.

함수 어노테이션은 일반적으로 형 힌트 로 사용됩니다: 예를 들어, 이 함수는 두 개의 int 인자를 받아들일 것으로 기대되고, 동시에 int 반환 값을 줄 것으로 기대됩니다:

def sum_two_numbers(a: int, b: int) -> int:
   return a + b

함수 어노테이션 문법은 함수 정의 절에서 설명합니다.

이 기능을 설명하는 변수 어노테이션PEP 484를 참조하세요. 또한 어노테이션에 대한 모범 사례는 어노테이션 모범 사례를 참조하세요.

__future__

A future statement, from __future__ import <feature>, directs the compiler to compile the current module using syntax or semantics that will become standard in a future release of Python. The __future__ module documents the possible values of feature. By importing this module and evaluating its variables, you can see when a new feature was first added to the language and when it will (or did) become the default:

>>> import __future__
>>> __future__.division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
garbage collection (가비지 수거)

더 사용되지 않는 메모리를 반납하는 절차. 파이썬은 참조 횟수 추적과 참조 순환을 감지하고 끊을 수 있는 순환 가비지 수거기를 통해 가비지 수거를 수행합니다. 가비지 수거기는 gc 모듈을 사용해서 제어할 수 있습니다.

generator (제너레이터)

Informally used to mean either a generator function or a generator iterator, depending on context. The formal terms generator function and generator iterator are uncommon in practice; “generator” alone is almost always sufficient.

generator function (제너레이터 함수)

A function which returns a generator object. It looks like a normal function except that it contains yield expressions for producing a series of values usable in a for-loop or that can be retrieved one at a time with the next() function. See 일드 표현식(Yield expressions).

generator iterator (제너레이터 이터레이터)

제너레이터 함수 또는 제너레이터 표현식 에 의해 생성된 객체입니다.

Each yield temporarily suspends processing, remembering the execution state (including local variables and pending try-statements). When the generator iterator resumes, it picks up where it left off (in contrast to functions which start fresh on every invocation).

제너레이터 이터레이터는 또한 중단된 제너레이터에 값을 전달하는 send() 메서드와 제너레이터가 중지된 시점에서 예외를 발생시키는 throw() 메서드를 구현합니다. 자세한 내용은 제너레이터-이터레이터 메서드 를 참조하십시오.

generator expression (제너레이터 표현식)

이터레이터를 돌려주는 표현식. 루프 변수와 범위를 정의하는 for 절과 생략 가능한 if 절이 뒤에 붙는 일반 표현식 처럼 보입니다. 결합한 표현식은 둘러싼 함수를 위한 값들을 만들어냅니다:

>>> sum(i*i for i in range(10))         # 0, 1, 4, ... 81의 제곱 합
285
generic function (제네릭 함수)

같은 연산을 서로 다른 형들에 대해 구현한 여러 함수로 구성된 함수. 호출 때 어떤 구현이 사용될지는 디스패치 알고리즘에 의해 결정됩니다.

싱글 디스패치 용어집 항목, @functools.singledispatch 데코레이터, 그리고 PEP 443 도 참조하십시오.

generic type (제네릭 형)

매개 변수화 할 수 있는 ; 일반적으로 listdict와 같은 컨테이너 클래스. 형 힌트어노테이션에 사용됩니다.

자세한 내용은 제네릭 에일리어스 형, PEP 483, PEP 484, PEP 585, 그리고 typing 모듈을 참조하십시오.

GIL

전역 인터프리터 록 을 보세요.

global interpreter lock (전역 인터프리터 록)

한 번에 오직 하나의 스레드가 파이썬 바이트 코드 를 실행하도록 보장하기 위해 CPython 인터프리터가 사용하는 메커니즘. (dict와 같은 중요한 내장형들을 포함하는) 객체 모델이 묵시적으로 동시 액세스에 대해 안전하도록 만들어서 CPython 구현을 단순하게 만듭니다. 인터프리터 전체를 잠그는 것은 인터프리터를 다중스레드화하기 쉽게 만드는 대신, 다중 프로세서 기계가 제공하는 병렬성의 많은 부분을 희생합니다.

하지만, 어떤 확장 모듈들은, 표준이나 제삼자 모두, 압축이나 해싱 같은 계산 집약적인 작업을 수행할 때는 GIL을 반납하도록 설계되었습니다. 또한, I/O를 할 때는 항상 GIL을 반납합니다.

Python 3.13부터는 --disable-gil 빌드 구성을 사용하여 GIL을 비활성화할 수 있습니다. 이 옵션으로 Python을 구축한 후에는 -X gil=0 와 또는 PYTHON_GIL=0 환경 변수를 설정한 후 코드를 실행해야 합니다. 이 기능은 멀티스레드 애플리케이션의 성능을 향상시키고 멀티코어 CPU를 효율적으로 사용하는 것을 용이하게 합니다. 자세한 내용은 PEP 703 을 참조하십시오.

이전 버전의 Python C API에서 함수는 사용을 위해 GIL이 유지되어야 한다고 선언할 수 있습니다. 이는 연결된 스레드 상태 를 보유하고 있음을 의미합니다.

global state (전역 상태)

모듈 수준 변수, 클래스 변수 또는 확장 모듈 의 C 정적 변수와 같이 프로그램 전체에서 접근 가능한 데이터입니다. 멀티스레드 프로그램에서 스레드 간에 공유되는 전역 상태는 일반적으로 경쟁 조건데이터 레이스 를 방지하기 위해 동기화가 필요합니다.

hash-based pyc (해시 기반 pyc)

유효성을 판별하기 위해 해당 소스 파일의 최종 수정 시간이 아닌 해시를 사용하는 바이트 코드 캐시 파일. 캐시된 바이트 코드 무효화을 참조하세요.

hashable (해시 가능)

객체가 일생 그 값이 변하지 않는 해시값을 갖고 (__hash__() 메서드가 필요합니다), 다른 객체와 비교될 수 있으면 (__eq__() 메서드가 필요합니다), 해시 가능하다고 합니다. 같다고 비교되는 해시 가능한 객체들의 해시값은 같아야 합니다.

해시 가능성은 객체를 딕셔너리의 키나 집합의 멤버로 사용할 수 있게 하는데, 이 자료 구조들이 내부적으로 해시값을 사용하기 때문입니다.

대부분 파이썬의 불변 내장 객체들은 해시 가능합니다; (리스트나 딕셔너리 같은) 가변 컨테이너들은 그렇지 않습니다; (튜플이나 frozenset 같은) 불변 컨테이너들은 그들의 요소들이 해시 가능할 때만 해시 가능합니다. 사용자 정의 클래스의 인스턴스 객체들은 기본적으로 해시 가능합니다. (자기 자신을 제외하고는) 모두 다르다고 비교되고, 해시값은 id()로 부터 만들어집니다.

IDLE

파이썬을 위한 통합 개발 및 학습 환경 (Integrated Development and Learning Environment). IDLE — 파이썬 편집기와 셸은 파이썬의 표준 배포판에 따라오는 기초적인 편집기와 인터프리터 환경입니다.

immortal (불멸)

불멸 객체(Immortal objects)PEP 683 에서 도입된 CPython 구현 세부 사항입니다.

객체가 불멸인 경우 그 객체의 참조 횟수 가 절대 수정되지 않으며, 따라서 인터프리터가 실행되는 동안 절대로 할당 해제되지 않습니다. 예를 들어, CPython에서 TrueNone 은 불멸입니다.

불멸 객체는 sys._is_immortal() 또는 C API의 PyUnstable_IsImmortal() 을 통해 식별할 수 있습니다.

immutable (불변)

고정된 값을 가진 객체입니다. 불변 객체에는 숫자, 문자열, 튜플이 포함됩니다. 이러한 객체는 변경될 수 없습니다. 다른 값이 저장되어야 하는 경우 새로운 객체를 생성해야 합니다. 이들은 딕셔너리의 키와 같이 일정한 해시값이 필요한 곳에서 중요한 역할을 합니다. 불변 객체는 생성 후 상태를 수정할 수 없기 때문에 본질적으로 스레드 안전 하며, 부적절하게 동기화된 동시 수정 에 대한 우려가 없습니다.

import path (임포트 경로)

경로 기반 파인더 가 임포트 할 모듈을 찾기 위해 검색하는 장소들 (또는 경로 엔트리) 의 목록. 임포트 하는 동안, 이 장소들의 목록은 보통 sys.path 로부터 옵니다, 하지만 서브 패키지의 경우 부모 패키지의 __path__ 어트리뷰트로부터 올 수도 있습니다.

importing (임포팅)

한 모듈의 파이썬 코드가 다른 모듈의 파이썬 코드에서 사용될 수 있도록 하는 절차.

importer (임포터)

모듈을 찾기도 하고 로드 하기도 하는 객체; 동시에 파인더 이자 로더 객체입니다.

index (인덱스)

시퀀스 내 요소의 위치를 나타내는 숫자 값입니다.

Python에서 인덱싱은 0부터 시작합니다. 예를 들어, things[0]things첫 번째 요소를 가리키며, things[1] 은 두 번째 요소를 가리킵니다.

일부 문맥에서 Python은 시퀀스의 끝에서부터 숫자를 세기 위해 음수 인덱스를 허용하며, 슬라이스 를 사용하여 인덱싱합니다.

서브스크립트 도 참조하십시오.

interactive (대화형)

파이썬은 대화형 인터프리터를 갖고 있는데, 인터프리터 프롬프트에서 문장과 표현식을 입력할 수 있고, 즉각 실행된 결과를 볼 수 있다는 뜻입니다. 인자 없이 단지 python을 실행하세요 (컴퓨터의 주메뉴에서 선택하는 것도 가능할 수 있습니다). 새 아이디어를 검사하거나 모듈과 패키지를 들여다보는 매우 강력한 방법입니다 (help(x)를 기억하세요). 대화형 모드에 대한 자세한 내용은 대화형 모드를 보세요.

interpreted (인터프리티드)

바이트 코드 컴파일러의 존재 때문에 그 구분이 흐릿해지기는 하지만, 파이썬은 컴파일 언어가 아니라 인터프리터 언어입니다. 이것은 명시적으로 실행 파일을 만들지 않고도, 소스 파일을 직접 실행할 수 있다는 뜻입니다. 그 프로그램이 좀 더 천천히 실행되기는 하지만, 인터프리터 언어는 보통 컴파일 언어보다 짧은 개발/디버깅 주기를 갖습니다. 대화형 도 보세요.

interpreter shutdown (인터프리터 종료)

종료하라는 요청을 받을 때, 파이썬 인터프리터는 특별한 시기에 진입하는데, 모듈이나 여러 가지 중요한 내부 구조들과 같은 모든 할당된 자원들을 단계적으로 반납합니다. 또한, 가비지 수거기 를 여러 번 호출합니다. 사용자 정의 파괴자나 weakref 콜백에 있는 코드들의 실행을 시작시킬 수 있습니다. 종료 시기 동안 실행되는 코드는 다양한 예외들을 만날 수 있는데, 그것이 의존하는 자원들이 더 기능하지 않을 수 있기 때문입니다 (흔한 예는 라이브러리 모듈이나 경고 장치들입니다).

인터프리터 종료의 주된 원인은 실행되는 __main__ 모듈이나 스크립트가 실행을 끝내는 것입니다.

iterable (이터러블)

멤버들을 한 번에 하나씩 돌려줄 수 있는 객체. 이터러블의 예로는 모든 (list, str, tuple 같은) 시퀀스 형들, dict 같은 몇몇 비 시퀀스 형들, 파일 객체들, __iter__()시퀀스 개념을 구현하는 __getitem__() 메서드를 써서 정의한 모든 클래스의 객체들이 있습니다.

이터러블은 for 루프에 사용될 수 있고, 시퀀스를 필요로 하는 다른 많은 곳 (zip(), map(), …) 에 사용될 수 있습니다. 이터러블 객체가 내장 함수 iter() 에 인자로 전달되면, 그 객체의 이터레이터를 돌려줍니다. 이 이터레이터는 값들의 집합을 한 번 거치는 동안 유효합니다. 이터러블을 사용할 때, 보통은 iter() 를 호출하거나, 이터레이터 객체를 직접 다룰 필요는 없습니다. for 문은 이것들을 여러분을 대신해서 자동으로 해주는데, 루프를 도는 동안 이터레이터를 잡아둘 이름 없는 변수를 만듭니다. 이터레이터, 시퀀스, 제너레이터 도 보세요.

iterator (이터레이터)

데이터의 스트림을 표현하는 객체. 이터레이터의 __next__() 메서드를 반복적으로 호출하면 (또는 내장 함수 next() 로 전달하면) 스트림에 있는 항목들을 차례대로 돌려줍니다. 더 이상의 데이터가 없을 때는 대신 StopIteration 예외를 일으킵니다. 이 지점에서, 이터레이터 객체는 소진되고, 이후의 모든 __next__() 메서드 호출은 StopIteration 예외를 다시 일으키기만 합니다. 이터레이터는 이터레이터 객체 자신을 돌려주는 __iter__() 메서드를 가질 것이 요구되기 때문에, 이터레이터는 이터러블이기도 하고 다른 이터러블들을 받아들이는 대부분의 곳에서 사용될 수 있습니다. 중요한 예외는 여러 번의 이터레이션을 시도하는 코드입니다. (list 같은) 컨테이너 객체는 iter() 함수로 전달하거나 for 루프에 사용할 때마다 새 이터레이터를 만듭니다. 이런 것을 이터레이터에 대해서 수행하려고 하면, 지난 이터레이션에 사용된 이미 소진된 이터레이터를 돌려줘서, 빈 컨테이너처럼 보이게 만듭니다.

이터레이터 형 에 더 자세한 내용이 있습니다.

CPython은 이터레이터가 __iter__() 를 정의해야 한다는 요구 사항을 일관되게 적용하지 않습니다. 또한, 자유 스레딩 CPython은 이터레이터 연산의 스레드 안전 동작을 보장하지 않으므로 주의하십시오.

key (키)

매핑 의 항목을 식별하는 값입니다. 서브스크립트 도 참조하십시오.

key function (키 함수)

키 함수 또는 콜레이션(collation) 함수는 정렬(sorting)이나 배열(ordering)에 사용되는 값을 돌려주는 콜러블입니다. 예를 들어, locale.strxfrm() 은 로케일 특정 방식을 따르는 정렬 키를 만드는 데 사용됩니다.

파이썬의 많은 도구가 요소들이 어떻게 순서 지어지고 묶이는지를 제어하기 위해 키 함수를 받아들입니다. 이런 것들에는 min(), max(), sorted(), list.sort(), heapq.merge(), heapq.nsmallest(), heapq.nlargest(), itertools.groupby() 이 있습니다.

키 함수를 만드는 방법은 여러 가지가 있습니다. 예를 들어, str.casefold() 메서드는 대소문자를 구분하지 않는 정렬을 위한 키 함수로 사용될 수 있습니다. 또는 lambda r: (r[0], r[2]) 와 같은 lambda 표현식으로 키 함수를 만들 수도 있습니다. 또한, operator.attrgetter(), operator.itemgetter(), operator.methodcaller() 는 세 가지 키 함수 생성자입니다. 키 함수를 생성하고 사용하는 방법에 대한 예제는 Sorting HOW TO 를 참조하십시오.

keyword argument (키워드 인자)

인자 를 보세요.

lambda (람다)

호출될 때 값이 구해지는 하나의 표현식 으로 구성된 이름 없는 인라인 함수. 람다 함수를 만드는 문법은 lambda [parameters]: expression 입니다.

LBYL

뛰기 전에 보라 (Look before you leap). 이 코딩 스타일은 호출이나 조회를 하기 전에 명시적으로 사전 조건들을 검사합니다. 이 스타일은 EAFP 접근법과 대비되고, 많은 if 문의 존재로 특징지어집니다.

멀티스레드 환경에서 LBYL 접근 방식은 “확인(looking)”과 “실행(leaping)” 사이에 경쟁 조건 을 발생시킬 위험이 있습니다. 예를 들어, if key in mapping: return mapping[key] 코드는 테스트 이후에 다른 스레드가 mapping 에서 key 를 제거하고 실제 조회를 수행하기 전에 실행될 경우 실패할 수 있습니다. 이 문제는 을 사용하거나 EAFP 방식을 사용하여 해결할 수 있습니다. 또한 스레드 안전 도 참조하십시오.

lexical analyzer (어휘 분석기)

토크나이저 의 공식 명칭입니다. 토큰 을 참조하십시오.

list (리스트)

내장 파이썬 시퀀스. 그 이름에도 불구하고, 원소에 대한 액세스가 O(1)이기 때문에, 연결 리스트(linked list)보다는 다른 언어의 배열과 유사합니다.

list comprehension (리스트 컴프리헨션)

시퀀스의 요소들 전부 또는 일부를 처리하고 그 결과를 리스트로 돌려주는 간결한 방법. result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] 는 0에서 255 사이에 있는 짝수들의 16진수 (0x..) 들을 포함하는 문자열의 리스트를 만듭니다. if 절은 생략할 수 있습니다. 생략하면, range(256)에 있는 모든 요소가 처리됩니다.

lock (록)

A synchronization primitive that allows only one thread at a time to access a shared resource. A thread must acquire a lock before accessing the protected resource and release it afterward. If a thread attempts to acquire a lock that is already held by another thread, it will block until the lock becomes available. Python’s threading module provides Lock (a basic lock) and RLock (a reentrant lock). Locks are used to prevent race conditions and ensure thread-safe access to shared data. Alternative design patterns to locks exist such as queues, producer/consumer patterns, and thread-local state. See also deadlock, and reentrant.

lock-free (록 프리)

어떤 도 획득하지 않고 원자적 CPU 명령을 사용하여 정확성을 보장하는 연산입니다. 락 프리(Lock-free) 연산은 서로를 차단하지 않고 동시에 실행될 수 있으며, 록을 보유한 다른 연산에 의해 차단되지 않습니다. 자유 스레딩 파이썬에서 dictlist 와 같은 내장 타입은 락 프리 읽기 연산을 제공합니다. 이는 해당 수정 작업이 객체별 록 을 보유하고 있더라도 다른 스레드가 다단계 수정 과정 중에 발생하는 중간 상태를 관찰할 수 있음을 의미합니다.

loader (로더)

모듈을 로드하는 객체입니다. Loader 인터페이스를 구현하기 위해 exec_module()create_module() 메서드를 정의해야 합니다. 로더는 보통 파인더 에 의해 반환됩니다. 다음도 참조하십시오:

locale encoding (로케일 인코딩)

Unix 환경에서 이는 LC_CTYPE 로케일의 인코딩입니다. locale.setlocale(locale.LC_CTYPE, new_locale) 로 설정할 수 있습니다.

Windows 환경에서 이는 ANSI 코드 페이지(예: "cp1252")입니다.

Android 및 VxWorks에서는 파이썬이 로케일 인코딩으로 "utf-8" 을 사용합니다.

locale.getencoding() 을 사용하여 로케일 인코딩을 가져올 수 있습니다.

파일 시스템 인코딩 및 오류 처리기 도 참조하십시오.

magic method (매직 메서드)

특수 메서드 의 비공식적인 비슷한 말.

mapping (매핑)

임의의 키 조회를 지원하고 collections.abc.Mapping 이나 collections.abc.MutableMapping 추상 베이스 클래스 에 지정된 메서드들을 구현하는 컨테이너 객체. 예로는 dict, collections.defaultdict, collections.OrderedDict, collections.Counter 를 들 수 있습니다.

meta path finder (메타 경로 파인더)

sys.meta_path 의 검색이 돌려주는 파인더. 메타 경로 파인더는 경로 엔트리 파인더 와 관련되어 있기는 하지만 다릅니다.

메타 경로 파인더가 구현하는 메서드들에 대해서는 importlib.abc.MetaPathFinder 를 보면 됩니다.

metaclass (메타 클래스)

클래스의 클래스. 클래스 정의는 클래스 이름, 클래스 딕셔너리, 베이스 클래스들의 목록을 만듭니다. 메타 클래스는 이 세 인자를 받아서 클래스를 만드는 책임을 집니다. 대부분의 객체 지향형 프로그래밍 언어들은 기본 구현을 제공합니다. 파이썬을 특별하게 만드는 것은 커스텀 메타 클래스를 만들 수 있다는 것입니다. 대부분 사용자에게는 이 도구가 전혀 필요 없지만, 필요가 생길 때, 메타 클래스는 강력하고 우아한 해법을 제공합니다. 어트리뷰트 액세스의 로깅(logging), 스레드 안전성의 추가, 객체 생성 추적, 싱글톤 구현과 많은 다른 작업에 사용됐습니다.

메타 클래스 에서 더 자세한 내용을 찾을 수 있습니다.

method (메서드)

클래스 바디 안에서 정의되는 함수. 그 클래스의 인스턴스의 어트리뷰트로서 호출되면, 그 메서드는 첫 번째 인자 (보통 self 라고 불린다) 로 인스턴스 객체를 받습니다. 함수중첩된 스코프 를 보세요.

method resolution order (메서드 결정 순서)

메서드 결정 순서는 조회하는 동안 멤버를 검색하는 베이스 클래스들의 순서입니다. 2.3 릴리스부터 파이썬 인터프리터에 사용된 알고리즘의 상세한 내용은 Python 2.3 메서드 결정 순서를 보세요.

module (모듈)

파이썬 코드의 조직화 단위를 담당하는 객체. 모듈은 임의의 파이썬 객체들을 담는 이름 공간을 갖습니다. 모듈은 임포팅 절차에 의해 파이썬으로 로드됩니다.

패키지 도 보세요.

module spec (모듈 스펙)

모듈을 로드하는데 사용되는 임포트 관련 정보들을 담고 있는 이름 공간. importlib.machinery.ModuleSpec 의 인스턴스.

모듈 스펙 도 보세요.

MRO

메서드 결정 순서 를 보세요.

mutable (가변)

프로그램 진행 중에 상태가 변경될 수 있는 객체 입니다. 멀티스레드 프로그램에서 스레드 간에 공유되는 가변(mutable) 객체는 경쟁 조건 을 방지하기 위해 세심한 동기화가 필요합니다. 또한 불변, 스레드 안전, 그리고 동시 수정 도 참조하십시오.

named tuple (네임드 튜플)

“named tuple(네임드 튜플)”이라는 용어는 튜플에서 상속하고 이름 붙은 어트리뷰트를 사용하여 인덱스 할 수 있는 요소에 액세스 할 수 있는 모든 형이나 클래스에 적용됩니다. 형이나 클래스에는 다른 기능도 있을 수 있습니다.

time.localtime()os.stat()가 반환한 값을 포함하여, 여러 내장형이 네임드 튜플입니다. 또 다른 예는 sys.float_info입니다:

>>> sys.float_info[1]                   # 인덱스 접근
1024
>>> sys.float_info.max_exp              # 명명된 필드 액세스
1024
>>> isinstance(sys.float_info, tuple)   # 튜플 유형 여부
True

일부 네임드 튜플은 내장형(위의 예)입니다. 또는, tuple에서 상속하고 이름 붙은 필드를 정의하는 일반 클래스 정의로 네임드 튜플을 만들 수 있습니다. 이러한 클래스는 직접 작성하거나, typing.NamedTuple를 계승하거나 팩토리 함수 collections.namedtuple()로 만들 수 있습니다. 후자의 기법은 직접 작성하거나 내장 네임드 튜플에서는 찾을 수 없는 몇 가지 추가 메서드를 추가하기도 합니다.

namespace (이름 공간)

변수가 저장되는 장소. 이름 공간은 딕셔너리로 구현됩니다. 객체에 중첩된 이름 공간 (메서드 에서) 뿐만 아니라 지역, 전역, 내장 이름 공간이 있습니다. 이름 공간은 이름 충돌을 방지해서 모듈성을 지원합니다. 예를 들어, 함수 builtins.openos.open() 은 그들의 이름 공간에 의해 구별됩니다. 또한, 이름 공간은 어떤 모듈이 함수를 구현하는지를 분명하게 만들어서 가독성과 유지 보수성에 도움을 줍니다. 예를 들어, random.seed() 또는 itertools.islice() 라고 쓰면 그 함수들이 각각 randomitertools 모듈에 의해 구현되었음이 명확해집니다.

namespace package (이름 공간 패키지)

오직 서브 패키지들의 컨테이너로만 기능하는 패키지. 이름 공간 패키지는 물리적인 실체가 없을 수도 있고, 특히 __init__.py 파일이 없으므로 정규 패키지 와는 다릅니다.

네임스페이스 패키지(Namespace packages)는 여러 개별로 설치 가능한 패키지가 공통의 부모 패키지를 갖도록 허용합니다. 그렇지 않은 경우, 정규 패키지 를 사용하는 것이 좋습니다.

자세한 내용은 PEP 420이름 공간 패키지 를 참조하십시오.

모듈 도 보세요.

native code (네이티브 코드)

Code that is compiled to machine instructions and runs directly on the processor, as opposed to code that is interpreted or runs in a virtual machine. In the context of Python, native code typically refers to C, C++, Rust or Fortran code in extension modules that can be called from Python. See also extension module.

nested scope (중첩된 스코프)

둘러싼 정의에서 변수를 참조하는 능력. 예를 들어, 다른 함수 내부에서 정의된 함수는 바깥 함수에 있는 변수들을 참조할 수 있습니다. 중첩된 스코프는 기본적으로는 참조만 가능할 뿐, 대입은 되지 않는다는 것에 주의해야 합니다. 지역 변수들은 가장 내부의 스코프에서 읽고 씁니다. 마찬가지로, 전역 변수들은 전역 이름 공간에서 읽고 씁니다. nonlocal 은 바깥 스코프에 쓰는 것을 허락합니다.

new-style class (뉴스타일 클래스)

지금은 모든 클래스 객체에 사용되고 있는 클래스 버전의 예전 이름. 초기의 파이썬 버전에서는, 오직 뉴스타일 클래스만 __slots__, 디스크립터, 프라퍼티, __getattribute__(), 클래스 메서드, 스태틱 메서드와 같은 파이썬의 새롭고 다양한 기능들을 사용할 수 있었습니다.

non-deterministic (비결정적)

동일한 입력에 대해 프로그램의 실행 결과가 실행 시마다 달라지는 동작입니다. 멀티스레드 프로그램에서 비결정론적(non-deterministic) 동작은 종종 스레드의 상대적인 타이밍이나 인터리빙이 결과에 영향을 미치는 경쟁 상태 로 인해 발생합니다. 및 기타 동기화 프리미티브 를 사용하여 적절하게 동기화하면 결정론적 동작을 보장하는 데 도움이 됩니다.

object (객체)

상태 (어트리뷰트나 값) 를 갖고 동작 (메서드) 이 정의된 모든 데이터. 또한, 모든 뉴스타일 클래스 의 최종적인 베이스 클래스입니다.

optimized scope (최적화된 스코프)

코드가 컴파일될 때 대상 로컬 변수 이름이 컴파일러에 의해 확실하게 파악되는 스코프로, 이 이름을 읽고 쓰는 액세스를 최적화할 수 있습니다. 함수, 제너레이터, 코루틴, 컴프리헨션 및 제너레이터 표현식의 로컬 네임스페이스가 이러한 방식으로 최적화됩니다. 참고: 대부분의 인터프리터 최적화는 모든 스코프에 적용되지만, 알려진 로컬 및 논로컬(nonlocal) 변수 세트에 의존하는 경우만 최적화된 스코프로 제한됩니다.

optional module (선택적 모듈)

표준 라이브러리 의 일부이지만, 서드파티 라이브러리가 없거나 특정 플랫폼에서 지원되지 않아 일부 CPython 빌드에 포함되지 않을 수 있는 확장 모듈 입니다.

서드파티 라이브러리가 필요한 선택적 모듈 목록은 선택적 모듈의 요구 사항 를 참조하십시오.

package (패키지)

서브 모듈들이나, 재귀적으로 서브 패키지들을 포함할 수 있는 파이썬 모듈. 기술적으로, 패키지는 __path__ 어트리뷰트가 있는 파이썬 모듈입니다.

정규 패키지이름 공간 패키지 도 보세요.

parallelism (병렬성)

여러 작업을 동시에 실행하는 것입니다(예: 여러 CPU 코어에서). 전역 인터프리터 락 (GIL) 이 포함된 파이썬 빌드에서는 한 번에 하나의 스레드만 파이썬 바이트 코드를 실행하므로, 여러 CPU 코어를 활용하려면 일반적으로 여러 프로세스(예: multiprocessing) 또는 GIL을 해제하는 네이티브 확장 기능을 사용해야 합니다. 프리-스레디드 파이썬에서는 여러 파이썬 스레드가 서로 다른 코어에서 파이썬 코드를 동시에 실행할 수 있습니다.

parameter (매개변수)

함수 (또는 메서드) 정의에서 함수가 받을 수 있는 인자 (또는 어떤 경우 인자들) 를 지정하는 이름 붙은 엔티티. 다섯 종류의 매개변수가 있습니다:

  • 위치-키워드 (positional-or-keyword): 위치키워드 인자 로 전달될 수 있는 인자를 지정합니다. 이것이 기본 형태의 매개변수입니다, 예를 들어 다음에서 foobar:

    def func(foo, bar=None): ...
    
  • 위치-전용 (positional-only): 위치로만 제공될 수 있는 인자를 지정합니다. 위치 전용 매개변수는 함수 정의의 매개변수 목록에 / 문자를 포함하고 그 뒤에 정의할 수 있습니다, 예를 들어 다음에서 posonly1posonly2:

    def func(posonly1, posonly2, /, positional_or_keyword): ...
    
  • 키워드-전용 (keyword-only): 키워드로만 제공될 수 있는 인자를 지정합니다. 키워드-전용 매개변수는 함수 정의의 매개변수 목록에서 앞에 하나의 가변-위치 매개변수나 *를 그대로 포함해서 정의할 수 있습니다. 예를 들어, 다음에서 kw_only1kw_only2:

    def func(arg, *, kw_only1, kw_only2): ...
    
  • 가변-위치 (var-positional): (다른 매개변수들에 의해서 이미 받아들여진 위치 인자들에 더해) 제공될 수 있는 위치 인자들의 임의의 시퀀스를 지정합니다. 이런 매개변수는 매개변수 이름에 * 를 앞에 붙여서 정의될 수 있습니다, 예를 들어 다음에서 args:

    def func(*args, **kwargs): ...
    
  • 가변-키워드 (var-keyword): (다른 매개변수들에 의해서 이미 받아들여진 키워드 인자들에 더해) 제공될 수 있는 임의의 개수 키워드 인자들을 지정합니다. 이런 매개변수는 매개변수 이름에 **를 앞에 붙여서 정의될 수 있습니다, 예를 들어 위의 예에서 kwargs.

매개변수는 선택적 인자들을 위한 기본값뿐만 아니라 선택적이거나 필수 인자들을 지정할 수 있습니다.

인자 용어집 항목, 인자와 매개변수의 차이에 나오는 FAQ 질문, inspect.Parameter 클래스, 함수 정의 절, PEP 362도 보세요.

per-object lock (객체별 록)

모든 객체에서 공유되는 전역 락이 아니라 개별 객체 인스턴스와 연관된 입니다. 프리-스레디드 파이썬에서 dictlist 와 같은 내장 타입은 서로 다른 객체에 대한 동시 작업을 허용하면서 동일한 객체에 대한 작업은 직렬화하기 위해 객체별 락을 사용합니다. 객체별 락을 점유하는 동작은 동일한 객체에 대한 다른 락 작동이 진행되는 것을 방지하지만, 락-프리 작업을 차단하지는 않습니다.

path entry (경로 엔트리)

경로 기반 파인더 가 임포트 할 모듈들을 찾기 위해 참고하는 임포트 경로 상의 하나의 장소.

path entry finder (경로 엔트리 파인더)

sys.path_hooks 에 있는 콜러블 (즉, 경로 엔트리 훅) 이 돌려주는 파인더 인데, 주어진 경로 엔트리 로 모듈을 찾는 방법을 알고 있습니다.

경로 엔트리 파인더들이 구현하는 메서드들은 importlib.abc.PathEntryFinder 에 나옵니다.

path entry hook (경로 엔트리 훅)

sys.path_hooks 리스트에 있는 콜러블인데, 특정 경로 엔트리 에서 모듈을 찾는 법을 알고 있다면 경로 엔트리 파인더 를 돌려줍니다.

path based finder (경로 기반 파인더)

기본 메타 경로 파인더들 중 하나인데, 임포트 경로 에서 모듈을 찾습니다.

path-like object (경로류 객체)

파일 시스템 경로를 나타내는 객체. 경로류 객체는 경로를 나타내는 strbytes 객체이거나 os.PathLike 프로토콜을 구현하는 객체입니다. os.PathLike 프로토콜을 지원하는 객체는 os.fspath() 함수를 호출해서 strbytes 파일 시스템 경로로 변환될 수 있습니다; 대신 os.fsdecode()os.fsencode() 는 각각 strbytes 결과를 보장하는데 사용될 수 있습니다. PEP 519로 도입되었습니다.

PEP

파이썬 개선 제안. PEP는 파이썬 커뮤니티에 정보를 제공하거나 파이썬 또는 그 프로세스 또는 환경에 대한 새로운 기능을 설명하는 설계 문서입니다. PEP는 제안된 기능에 대한 간결한 기술 사양 및 근거를 제공해야 합니다.

PEP는 주요 새로운 기능을 제안하고 문제에 대한 커뮤니티 입력을 수집하며 파이썬에 들어간 설계 결정을 문서로 만들기 위한 기본 메커니즘입니다. PEP 작성자는 커뮤니티 내에서 합의를 구축하고 반대 의견을 문서화 할 책임이 있습니다.

PEP 1 참조하세요.

portion (포션)

PEP 420 에서 정의한 것처럼, 이름 공간 패키지에 이바지하는 하나의 디렉터리에 들어있는 파일들의 집합 (zip 파일에 저장되는 것도 가능합니다).

positional argument (위치 인자)

인자 를 보세요.

provisional API (잠정 API)

잠정 API는 표준 라이브러리의 과거 호환성 보장으로부터 신중히 제외된 것입니다. 인터페이스의 큰 변화가 예상되지는 않지만, 잠정적이라고 표시되는 한, 코어 개발자들이 필요하다고 생각한다면 과거 호환성이 유지되지 않는 변경이 일어날 수 있습니다. 그런 변경은 불필요한 방식으로 일어나지는 않을 것입니다 — API를 포함하기 전에 놓친 중대하고 근본적인 결함이 발견된 경우에만 일어날 것입니다.

잠정 API에서조차도, 과거 호환성이 유지되지 않는 변경은 “최후의 수단”으로 여겨집니다 - 모든 식별된 문제들에 대해 과거 호환성을 유지하는 해법을 찾으려는 모든 시도가 선행됩니다.

이 절차는 표준 라이브러리가 오랜 시간 동안 잘못된 설계 오류에 발목 잡히지 않고 발전할 수 있도록 만듭니다. 더 자세한 내용은 PEP 411을 보면 됩니다.

provisional package (잠정 패키지)

잠정 API 를 보세요.

Python 3000 (파이썬 3000)

파이썬 3.x 배포 라인의 별명 (버전 3의 배포가 먼 미래의 이야기던 시절에 만들어진 이름이다.) 이것을 “Py3k” 로 줄여 쓰기도 합니다.

Pythonic (파이썬다운)

다른 언어들에서 일반적인 개념들을 사용해서 코드를 구현하는 대신, 파이썬 언어에서 가장 자주 사용되는 이디엄들을 가까이 따르는 아이디어나 코드 조각. 예를 들어, 파이썬에서 자주 쓰는 이디엄은 for 문을 사용해서 이터러블의 모든 요소로 루핑하는 것입니다. 다른 많은 언어에는 이런 종류의 구성물이 없으므로, 파이썬에 익숙하지 않은 사람들은 대신에 숫자 카운터를 사용하기도 합니다:

for i in range(len(food)):
    print(food[i])

더 깔끔한, 파이썬다운 방법은 이렇습니다:

for piece in food:
    print(piece)
qualified name (정규화된 이름)

모듈의 전역 스코프에서 모듈에 정의된 클래스, 함수, 메서드에 이르는 “경로”를 보여주는 점으로 구분된 이름. PEP 3155 에서 정의됩니다. 최상위 함수와 클래스의 경우에, 정규화된 이름은 객체의 이름과 같습니다:

>>> class C:
...     class D:
...         def meth(self):
...             pass
...
>>> C.__qualname__
'C'
>>> C.D.__qualname__
'C.D'
>>> C.D.meth.__qualname__
'C.D.meth'

모듈을 가리키는데 사용될 때, 완전히 정규화된 이름(fully qualified name)은 모든 부모 패키지들을 포함해서 모듈로 가는 점으로 분리된 이름을 의미합니다, 예를 들어, email.mime.text:

>>> import email.mime.text
>>> email.mime.text.__name__
'email.mime.text'
race condition (경합 조건)

A condition of a program where the behavior depends on the relative timing or ordering of events, particularly in multi-threaded programs. Race conditions can lead to non-deterministic behavior and bugs that are difficult to reproduce. A data race is a specific type of race condition involving unsynchronized access to shared memory. The LBYL coding style is particularly susceptible to race conditions in multi-threaded code. Using locks and other synchronization primitives helps prevent race conditions.

reference count (참조 횟수)

객체에 대한 참조의 개수. 객체의 참조 횟수가 0으로 떨어지면, 메모리가 반납됩니다. 일부 객체는 불멸이며 참조 횟수가 수정되지 않아서, 객체가 할당 해제되지 않습니다. 참조 횟수 추적은 일반적으로 파이썬 코드에 노출되지는 않지만, CPython 구현의 핵심 요소입니다. 프로그래머는 특정 객체의 참조 횟수를 돌려주는 sys.getrefcount() 함수를 호출할 수 있습니다.

CPython 에서 참조 횟수는 안정적이거나 잘 정의된 값으로 간주되지 않습니다. 객체에 대한 참조 횟수와 파이썬 코드에 의해 그 수가 영향을 받는 방식은 버전마다 다를 수 있습니다.

regular package (정규 패키지)

__init__.py 파일을 포함하는 디렉터리와 같은 전통적인 패키지.

이름 공간 패키지 도 보세요.

reentrant (재진입 가능)

함수나 이 동일한 스레드에 의해 오류나 데드락 을 발생시키지 않고 여러 번 호출되거나 획득될 수 있게 하는 속성입니다.

For functions, reentrancy means the function can be safely called again before a previous invocation has completed, which is important when functions may be called recursively or from signal handlers. Thread-unsafe functions may be non-deterministic if they’re called reentrantly in a multithreaded program.

락의 경우, 파이썬의 threading.RLock (재진입 락)은 재진입이 가능하여 이미 락을 보유한 스레드가 차단 없이 다시 획득할 수 있습니다. 반면, threading.Lock 은 재진입이 불가능하며 동일한 스레드에서 두 번 획득하려고 시도하면 데드락이 발생합니다.

데드락 도 참조하십시오.

REPL

“읽기-평가-인쇄 루프”의 약어이며, 대화형 인터프리터 셸을 부르는 또 다른 이름입니다.

__slots__

클래스 내부의 선언인데, 인스턴스 어트리뷰트들을 위한 공간을 미리 선언하고 인스턴스 딕셔너리를 제거함으로써 메모리를 절감하는 효과를 줍니다. 인기 있기는 하지만, 이 테크닉은 올바르게 사용하기가 좀 까다로운 편이라서, 메모리에 민감한 응용 프로그램에서 많은 수의 인스턴스가 있는 특별한 경우로 한정하는 것이 좋습니다.

sequence (시퀀스)

__getitem__() 특수 메서드를 통해 정수 인덱스를 사용한 빠른 요소 액세스를 지원하고, 시퀀스의 길이를 돌려주는 __len__() 메서드를 정의하는 이터러블. 몇몇 내장 시퀀스들을 나열해보면, list, str, tuple, bytes 가 있습니다. dict 또한 __getitem__()__len__() 을 지원하지만, 조회에 정수 대신 임의의 해시 가능 키를 사용하기 때문에 시퀀스가 아니라 매핑으로 취급된다는 것에 주의해야 합니다.

collections.abc.Sequence 추상 기본 클래스는 단순한 __getitem__()__len__() 을 넘어 더 풍부한 인터페이스를 정의하며, count(), index(), __contains__(), 그리고 __reversed__() 를 추가합니다. 이 확장된 인터페이스를 구현하는 타입은 register() 를 사용하여 명시적으로 등록할 수 있습니다. 시퀀스 메서드에 대한 일반적인 설명은 Common Sequence Operations 을 참조하십시오.

set comprehension (집합 컴프리헨션)

이터러블에 있는 요소 전체나 일부를 처리하고 결과를 담은 집합을 반환하는 간결한 방법. results = {c for c in 'abracadabra' if c not in 'abc'}는 문자열의 집합 {'r', 'd'}를 생성합니다. 컴프리헨션을 참조하십시오.

single dispatch (싱글 디스패치)

구현이 하나의 인자의 형에 기초해서 결정되는 제네릭 함수 디스패치의 한 형태.

slice (슬라이스)

시퀀스 의 일부를 설명하는 데 사용되는 slice 타입의 객체입니다. 슬라이스 객체는 대괄호 안에 콜론이 포함된, 예를 들어 variable_name[1:3:5] 와 같은 서브스크립트 표기법슬라이싱 형태를 사용할 때 생성됩니다.

soft deprecated (약하게 폐지된)

소프트하게 폐지된(soft deprecated) API는 새 코드에서 사용해서는 안 되지만, 이미 존재하는 코드가 사용하는 것은 안전합니다. 해당 API는 계속 문서화되고 테스트되지만 더 이상 개선되지 않습니다.

소프트한 폐지는 일반적인 폐지(deprecation)와 달리 API를 제거할 계획이 없으며 경고를 발생시키지 않습니다.

PEP 387: Soft Deprecation 를 참조하십시오.

special method (특수 메서드)

파이썬이 형에 어떤 연산을, 덧셈 같은, 실행할 때 묵시적으로 호출되는 메서드. 이런 메서드는 두 개의 밑줄로 시작하고 끝나는 이름을 갖고 있습니다. 특수 메서드는 특수 메서드 이름들 에 문서로 만들어져 있습니다.

standard library (표준 라이브러리)

공식 파이썬 인터프리터 패키지의 일부로 배포되는 패키지, 모듈, 그리고 확장 모듈 의 집합입니다. 이 컬렉션의 정확한 구성은 플랫폼, 가용한 시스템 라이브러리 또는 기타 기준에 따라 달라질 수 있습니다. 문서는 파이썬 표준 라이브러리 에서 확인할 수 있습니다.

가능한 모든 표준 라이브러리 모듈 이름 목록은 sys.stdlib_module_names 를 참조하십시오.

statement (문장)

문장은 스위트 (코드의 “블록(block)”) 를 구성하는 부분입니다. 문장은 표현식 이거나 키워드를 사용하는 여러 가지 구조물 중의 하나입니다. 가령 if, while, for.

static type checker (정적 형 검사기)

파이썬 코드를 읽고 분석하여 잘못된 타입과 같은 문제를 찾는 외부 도구입니다. 또한 형 힌트typing 모듈을 참조하십시오.

stdlib

표준 라이브러리 의 약어입니다.

steal (훔치다)

Python C API에서 인자를 “stealing”한다는 것은 해당 인자의 소유권이 호출된 함수로 이전됨을 의미합니다. 호출자는 호출 후 해당 참조를 사용해서는 안 됩니다. 일반적으로 인자를 “steal”하는 함수는 실패하더라도 소유권을 가져갑니다.

자세한 설명은 참조 횟수 상세 을 참조하십시오.

strong reference (강한 참조)

파이썬 C API에서 강한 참조(strong reference)는 참조를 보유하는 코드에 의해 소유되는 객체에 대한 참조입니다. 강한 참조는 참조가 생성될 때 Py_INCREF() 를 호출하여 획득하고, 참조가 삭제될 때 Py_DECREF() 를 사용하여 해제됩니다.

Py_NewRef() 함수를 사용하여 객체에 대한 강한 참조를 생성할 수 있습니다. 일반적으로 하나 이상의 참조가 누수되는 것을 방지하기 위해, 강한 참조의 범위를 벗어나기 전에 해당 강한 참조에 대해 Py_DECREF() 함수를 호출해야 합니다.

빌린 참조 도 보세요.

subscript (서브스크립트)

서브스크립션 표현식 의 대괄호 안의 표현식으로, 예를 들어 items[3] 에서 3 을 의미합니다. 일반적으로 컨테이너의 요소를 선택하는 데 사용됩니다. 또한 매핑 을 서브스크립트할 때는 , 시퀀스 를 서브스크립트할 때는 인덱스 라고도 불립니다.

synchronization primitive (동기화 프리미티브)

공유 리소스에 대한 스레드 안전 접근을 보장하기 위해 여러 스레드의 실행을 조정(동기화)하는 기본 구성 요소입니다. 파이썬의 threading 모듈은 Lock, RLock, Semaphore, Condition, Event, 그리고 Barrier 를 포함한 여러 동기화 프리미티브를 제공합니다. 또한, queue 모듈은 멀티스레드 프로그램에서 특히 유용한 다중 생산자, 다중 소비자 큐를 제공합니다. 이러한 프리미티브는 경쟁 상태 을 예방하고 스레드 실행을 조정하는 데 도움을 줍니다. 도 참조하십시오.

t-string (t-문자열)
t-strings (t-문자열)

t 또는 T 로 시작하는 문자열 리터럴은 흔히 “t-strings”라고 불리며, 이는 템플릿 문자열 리터럴 의 약칭입니다.

text encoding (텍스트 인코딩)

파이썬의 문자열은 유니코드 코드 포인트(범위: U+0000U+10FFFF)의 시퀀스입니다. 문자열을 저장하거나 전송하려면 바이트 시퀀스로 직렬화해야 합니다.

문자열을 바이트 시퀀스로 직렬화하는 것을 “인코딩(encoding)”이라 하고, 바이트 시퀀스에서 문자열을 다시 생성하는 것을 “디코딩(decoding)”이라고 합니다.

다양한 종류의 텍스트 직렬화 코덱 이 있으며, 이를 통칭하여 “텍스트 인코딩(text encodings)”이라 합니다.

text file (텍스트 파일)

str 객체를 읽고 쓸 수 있는 파일 객체. 종종, 텍스트 파일은 실제로는 바이트 지향 데이터스트림을 액세스하고 텍스트 인코딩 을 자동 처리합니다. 텍스트 파일의 예로는 텍스트 모드 ('r' 또는 'w') 로 열린 파일, sys.stdin, sys.stdout, io.StringIO 의 인스턴스를 들 수 있습니다.

바이트열류 객체 를 읽고 쓸 수 있는 파일 객체에 대해서는 바이너리 파일 도 참조하세요.

thread state (스레드)

CPython 런타임이 OS 스레드에서 실행하는 데 사용하는 정보입니다. 예를 들어, 이는 발생한 예외(있는 경우)와 바이트 코드 인터프리터의 상태를 포함합니다.

각 스레드 상태는 단일 OS 스레드에 바인딩되지만, 스레드는 여러 개의 스레드 상태를 가질 수 있습니다. 한 번에 최대 하나만 연결된 상태일 수 있습니다.

An attached thread state is required to call most of Python’s C API, unless a function explicitly documents otherwise. The bytecode interpreter only runs under an attached thread state.

각 스레드 상태는 단일 인터프리터에 속하지만, 각 인터프리터는 동일한 OS 스레드에 대해 여러 개의 스레드 상태를 포함하여 많은 스레드 상태를 가질 수 있습니다. 여러 인터프리터의 스레드 상태가 동일한 스레드에 바인딩될 수 있지만, 특정 시점에 해당 스레드에서 연결된 상태일 수 있는 것은 하나뿐입니다.

자세한 내용은 스레드 상태 및 전역 인터프리터 락 을(를) 참조하십시오.

thread-safe (스레드 안전한)

여러 스레드에 의해 동시에 실행될 때 올바르게 동작하는 모듈, 함수 또는 클래스입니다. 스레드 안전(Thread-safe) 코드는 공유 가능한 가변 상태를 보호하기 위해 과 같은 적절한 동기화 프리미티브 를 사용하거나, 공유 가능한 가변 상태를 완전히 피하도록 설계됩니다. free-threaded 빌드에서 dict, list, set 과 같은 내장 타입은 많은 작업을 스레드 안전하게 만들기 위해 내부 잠금을 사용하지만, 스레드 안전이 반드시 보장되는 것은 아닙니다. 스레드 안전하지 않은 코드는 멀티스레드 프로그램에서 사용될 때 경쟁 상태데이터 경합 이 발생할 수 있습니다.

token (토큰)

어휘 분석기 (또는 토크나이저 라고도 함)에 의해 생성된 소스 코드의 작은 단위입니다. 이름, 숫자, 문자열, 연산자, 줄 바꿈 및 이와 유사한 요소들이 토큰으로 표현됩니다.

tokenize 모듈은 파이썬의 어휘 분석기를 노출합니다. token 모듈은 다양한 유형의 토큰에 대한 정보를 포함합니다.

triple-quoted string (삼중 따옴표 된 문자열)

따옴표 (”) 나 작은따옴표 (’) 세 개로 둘러싸인 문자열. 그냥 따옴표 하나로 둘러싸인 문자열에 없는 기능을 제공하지는 않지만, 여러 가지 이유에서 쓸모가 있습니다. 이스케이프 되지 않은 작은따옴표나 큰따옴표를 문자열 안에 포함할 수 있도록 하고, 연결 문자를 쓰지 않고도 여러 줄에 걸칠 수 있는데, 독스트링을 쓸 때 특히 쓸모 있습니다.

type (형)

파이썬 객체의 형은 그것이 어떤 종류의 객체인지를 결정합니다; 모든 객체는 형이 있습니다. 객체의 형은 __class__ 어트리뷰트로 액세스할 수 있거나 type(obj)로 얻을 수 있습니다.

type alias (형 에일리어스)

형을 식별자에 대입하여 만들어지는 형의 동의어.

형 에일리어스는 형 힌트를 단순화하는 데 유용합니다. 예를 들면:

def remove_gray_shades(
        colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:
    pass

는 다음과 같이 더 읽기 쉽게 만들 수 있습니다:

Color = tuple[int, int, int]

def remove_gray_shades(colors: list[Color]) -> list[Color]:
    pass

이 기능을 설명하는 typingPEP 484를 참조하세요.

type hint (형 힌트)

변수, 클래스 어트리뷰트 및 함수 매개변수 나 반환 값의 기대되는 형을 지정하는 어노테이션.

형 힌트는 선택 사항이고 파이썬에서 강제되지는 않지만, 정적 형 검사기에 유용합니다. 또한 IDE의 코드 완성 및 리팩토링을 돕습니다.

지역 변수를 제외하고, 전역 변수, 클래스 어트리뷰트 및 함수의 형 힌트는 typing.get_type_hints()를 사용하여 액세스할 수 있습니다.

이 기능을 설명하는 typingPEP 484를 참조하세요.

universal newlines (유니버설 줄 넘김)

다음과 같은 것들을 모두 줄의 끝으로 인식하는, 텍스트 스트림을 해석하는 태도: 유닉스 개행 문자 관례 '\n', 윈도우즈 관례 '\r\n', 예전의 매킨토시 관례 '\r'. 추가적인 사용에 관해서는 bytes.splitlines() 뿐만 아니라 PEP 278PEP 3116 도 보세요.

variable annotation (변수 어노테이션)

변수 또는 클래스 어트리뷰트의 어노테이션.

변수 또는 클래스 어트리뷰트에 어노테이션을 달 때 대입은 선택 사항입니다:

class C:
    field: 'annotation'

변수 어노테이션은 일반적으로 형 힌트로 사용됩니다: 예를 들어, 이 변수는 int 값을 가질 것으로 기대됩니다:

count: int = 0

변수 어노테이션 문법은 섹션 어노테이트된 대입문(Annotated assignment statements) 에서 설명합니다.

이 기능을 설명하는 함수 어노테이션, PEP 484PEP 526을 참조하세요. 또한 어노테이션 작업에 대한 모범 사례는 어노테이션 모범 사례를 참조하세요.

virtual environment (가상 환경)

파이썬 사용자와 응용 프로그램이, 같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않으면서, 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는, 협력적으로 격리된 실행 환경.

venv 도 보세요.

virtual machine (가상 기계)

소프트웨어만으로 정의된 컴퓨터. 파이썬의 가상 기계는 바이트 코드 컴파일러가 출력하는 바이트 코드를 실행합니다.

walrus operator (바다코끼리 연산자)

고개를 돌려 보면 약간 바다코끼리(walrus)처럼 보이기 때문에, 대입 표현식 연산자 := 를 부르는 재치 있는 방식입니다.

Zen of Python (파이썬 젠)

파이썬 디자인 원리와 철학들의 목록인데, 언어를 이해하고 사용하는 데 도움이 됩니다. 이 목록은 대화형 프롬프트에서 “import this” 를 입력하면 보입니다.

분실물 보관소