티스토리 뷰

[코드잇]/ㄴ파이썬

[파이썬] 용어집

__hyeon2__ 2021. 5. 17. 10:13
728x90
반응형

파이썬 공식문서를 보고 정리한 글입니다🙂

 

https://docs.python.org/ko/3/glossary.html#glossary

 

 

용어집 — Python 3.9.5 문서

같은 형의 두 인자를 수반하는 연산이 일어나는 동안, 한 형의 인스턴스를 다른 형으로 묵시적으로 변환하는 것. 예를 들어, int(3.15)는 실수를 정수 3으로 변환합니다. 하지만, 3+4.5 에서, 각 인자

docs.python.org


>>>

대화형 셸의 기본 파이썬 프롬프트.

인터프리터에서 대화형으로 실행될 수 있는 코드 예에서 자주 볼 수 있음.

더보기

인터프리터(Interpreter,해석기) : 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말함

cf. 컴파일러(Compiler,해석기,번역기) : 좁은 의미로 고수준 언어를 저수준언어로 번역하는 프로그램 

 

인터프리터는 다음의 과정 가운데 적어도 한 가지 기능을 가진 프로그램

1.  소스 코드 직접 실행

2. 소스 코드를 중간 코드로 변환 후 바로 실행

3. 인터 프리터 시스템의 일부인 컴파일러가 만든, 미리 컴파일된 저장 코드의 실행을 호출

 

인터프리터는 컴파일단계를 거칠 필요 없어 프로그램을 즉시 실행 시킬 수 있다.

 

...

들여쓰기 된 코드 블록의 코드를 입력할 때,

쌍을 이루는 구분자 (괄호, 대괄호, 중괄호) 안에 코드를 입력할 때,

데코레이터 지정 후의 대화형 셸의 기본 파이썬 프롬프트.

Ellipsis 내장 상수

더보기

Ellipsis 리터럴 《...》 와 같습니다. 주로 사용자 정의 컨테이너 데이터형에 대한 확장 슬라이스 문법과 함께 사용되는 특수 값.

 

2to3

파이썬 2.x 코드를 파이썬 3.x 코드로 변환하려고 시도하는 도구.

소스를 구문 분석하고 구문 분석 트리를 탐색해서 감지할 수 있는 대부분의 비호환성을 다룸.

2to3 는 표준 라이브러리에서 lib2to3 로 제공.

독립적으로 실행할 수 있는 스크립트는 Tools/scripts/2to3 로 제공. 

 

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

hasattr() 같은 다른 테크닉들이 불편하거나 미묘하게 잘못된 (예를 들어, 매직(특수) 메서드) 경우,

인터페이스를 정의하는 방법을 제공함으로써 덕 타이핑 을 보완

더보기

hasattr(object, name)

인자는 객체와 문자열.

문자열이 객체의 속성 중 하나의 이름이면 결과는 True 이고, 그렇지 않으면 False.

 

매직(특수) 메서드

ex) __init__

 

덕 타이핑 (duck-typing)

 

올바른 인터페이스를 가졌는지 판단하는데 객체의 형을 보지 않는 프로그래밍 스타일.

타입을 미리 정하는 것이 아니라 실행이 되었을 때 해당 메서드를 확인하여 타입을 정함.

아래 사이트 예시 참고

https://dojang.io/mod/page/view.php?id=2397

 

파이썬 코딩 도장: Q & A

덕 타이핑이란 무엇인가요? 덕 타이핑은 실제 타입(클래스)은 상관하지 않고, 구현된 메서드로만 판단하는 방식입니다. 덕 타이핑은 "만약 어떤 새가 오리처럼 걷고, 헤엄치고, 꽥꽥거리는 소리

dojang.io

 

annotation (어노테이션)

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

지역 변수의 어노테이션은 실행 시간에 액세스할 수 없지만,

전역 변수, 클래스 속성 및 함수의 어노테이션은 각각 모듈, 클래스, 함수의 __annotations__ 특수 어트리뷰트에 저장됨.

더보기

type hint (형 힌트)

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

형 힌트는 선택 사항.

하지만, 정적 형 분석 도구에 유용하며 IDE의 코드 완성 및 리팩토링을 도움.

지역 변수를 제외하고, 전역 변수, 클래스 어트리뷰트 및 함수의 형 힌트는 

typing.get_type_hints()를 사용하여 액세스할 수 있음.

 

argument (인자)

함수를 호출할 때 함수 (또는 메서드) 로 전달되는 값. 

키워드 인자위치 인자가 있음.

더보기

키워드 인자 (keyword argument)

함수 호출 때 식별자가 앞에 붙은 인자 (예를 들어, name=) 또는 ** 를 앞에 붙인 딕셔너리로 전달되는 인자.

예를 들어, 다음과 같은 complex() 호출에서 3  5 는 모두 키워드 인자

complex(real=3, imag=5) 

complex(**{'real': 3, 'imag': 5})

 

위치 인자 (positional argument)

키워드 인자가 아닌 인자.

위치 인자들은 인자 목록의 처음에 나오거나 이터러블 의 앞에 * 를 붙여 전달할 수 있음.

예를 들어, 다음과 같은 호출에서 3  5 는 모두 위치 인자.

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

 

인자와 매개변수 차이

매개변수는 함수 정의에 나타나는 이름으로 정의되는 반면, 

인자는 함수를 호출할 때 실제로 함수에 전달되는 값.

매개변수는 함수가 받아들일 수 있는 인자 형을 정의.

 

예를 들어, 다음과 같은 함수 정의가 주어졌을 때:

 

def func(foo, bar=None, **kwargs): 

      pass

 

foo, bar  kwargs는 func의 매개변수.

그러나, func를 호출할 때,

예를 들면:

 

func(42, bar=314, extra=somevar)

 

42, 314  somevar 값은 인자.

 

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

__aenter__()  __aexit__() 메서드를 정의함으로써 async with 문에서 보이는 환경을 제어하는 객체.

 

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

비동기 제너레이터 이터레이터 를 돌려주는 함수. 

async def 로 정의되는 코루틴 함수처럼 보이는데, 

async for 루프가 사용할 수 있는 일련의 값들을 만드는 yield 표현식을 포함한다는 점이 다름.

보통 비동기 제너레이터 함수를 가리키지만, 어떤 문맥에서는 비동기 제너레이터 이터레이터 를 가리킴.

의도하는 의미가 명확하지 않은 경우는, 완전한 용어를 써서 모호함을 없앰.

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

 

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

비동기 제너레이터 함수가 만드는 객체.

비동기 이터레이터 인데 __anext__() 를 호출하면 어웨이터블 객체를 돌려주고,

이것은 다음 yield 표현식 까지 비동기 제너레이터 함수의 바디를 실행.

 yield는 일시적으로 처리를 중단하고, 그 위치의 (지역 변수들과 대기 중인 try-문들을 포함하는) 실행 상태를 기억.

비동기 제너레이터 이터레이터  __anext__() 가 돌려주는 또 하나의 어웨이터블로 재개되면, 떠난 곳으로 복귀

PEP 492 PEP 525 참고

 

asynchronous iterable (비동기 이터러블)

async for 문에서 사용될 수 있는 객체.

 __aiter__() 메서드는 비동기 이터레이터 를 돌려줘야 함. 

 

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

__aiter__()  __anext__() 메서드를 구현하는 객체. 

__anext__  어웨이터블 객체를 돌려줘야 함.

 async for StopAsyncIteration 예외가 발생할 때까지 비동기 이터레이터의 __anext__() 메서드가 돌려주는 어웨이터블을 품.

 

attribute (어트리뷰트)

점표현식을 사용하는 이름으로 참조되는 객체와 결합한 값.

예를 들어, 객체 o가 어트리뷰트 a를 가지면, o.a처럼 참조.

 

awaitable (어웨이터블)

await 표현식에 사용할 수 있는 객체.

코루틴 이나 __await__() 메서드를 가진 객체가 될 수 있음.

 

BDFL

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

binary file (바이너리 파일)

바이트열류 객체들을 읽고 쓸 수 있는 파일 객체.

바이너리 파일의 예로는 바이너리 모드 ('rb', 'wb' 또는 'rb+') 로 열린 파일, sys.stdin.buffer, sys.stdout.buffer, io.BytesIO  gzip.GzipFile 의 인스턴스를 들 수 있음.

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

 

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

버퍼 프로토콜 를 지원하고 C-연속 버퍼를 익스포트 할 수 있음.

여러 공통 memoryview 객체들은 물론이고 bytes, bytearray, array.array 객체들을 포함.

바이트열류 객체들은 바이너리 데이터를 다루는 여러 가지 연산들에 사용될 수 있음.

 

bytecode (바이트 코드)

파이썬 소스 코드는 바이트 코드로 컴파일되는데, CPython 인터프리터에서 파이썬 프로그램의 내부 표현.

바이트 코드는 .pyc 파일에 캐시 되어, 같은 파일을 두 번째 실행할 때 더 빨라지게 만듬.

(소스에서 바이트 코드로의 재컴파일을 피할 수 있음)

 

callback (콜백)

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

 

class (클래스)

사용자 정의 객체들을 만들기 위한 주형.

클래스 정의는 보통 클래스의 인스턴스를 대상으로 연산하는 메서드 정의들을 포함.

 

class variable (클래스 변수)

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

 

coercion (코어션)

같은 형의 두 인자를 수반하는 연산이 일어나는 동안, 한 형의 인스턴스를 다른 형으로 묵시적으로 변환하는 것.

더보기

예)

int(3.15)는 실수를 정수 3으로 변환. 

하지만, 3+4.5 에서, 각 인자는 다른 형이고 (하나는 int, 다른 하나는 float), 

둘을 더하기 전에 같은 형으로 변환해야 함. 

그렇지 않으면 TypeError 남.

 

코어션 없이는, 호환되는 형들조차도 프로그래머가 같은 형으로 정규화해주어야 함.

예를 들어, 그냥 3+4.5 하는 대신 float(3)+4.5.

 

complex number (복소수)

익숙한 실수 시스템의 확장인데, 모든 숫자가 실수부와 허수부의 합으로 표현.

허수부는 실수에 허수 단위(-1의 제곱근)를 곱한 것으로 j 접미사를 붙여서 표기하는 걸 기본 지원.

예를 들어, 3+1j. 

math 모듈의 복소수 버전이 필요하면, cmath를 사용. 

 

context manager (컨텍스트 관리자)

__enter__()  __exit__() 메서드를 정의함으로써 with 문에서 보이는 환경을 제어하는 객체. 

PEP 343으로 도입.

 

context variable (컨텍스트 변수)

컨텍스트에 따라 다른 값을 가질 수 있는 변수.

 

contiguous (연속)

버퍼는 정확히 C-연속(C-contiguous)이거나 포트란 연속(Fortran contiguous)일 때 연속이라고 여김.

영차원 버퍼는 C-연속이면서 포트란 연속.

일차원 배열에서, 항목들은 서로에 인접하고, 0에서 시작하는 오름차순 인덱스의 순서대로 메모리에 배치되어야 함.

다차원 C-연속 배열에서, 메모리 주소의 순서대로 항목들을 방문할 때 마지막 인덱스가 가장 빨리 변함.

하지만, 포트란 연속 배열에서는, 첫 번째 인덱스가 가장 빨리 변합니다.

 

coroutine (코루틴)

코루틴은 서브루틴의 더 일반화된 형태.

서브루틴은 한 지점에서 진입하고 다른 지점에서 탈출.

코루틴은 여러 다른 지점에서 진입하고, 탈출하고, 재개할 수 있음. 

 

coroutine function (코루틴 함수)

코루틴 객체를 돌려주는 함수.

코루틴 함수는 async def 문으로 정의될 수 있고, await  async for asyncwith 키워드를 포함할 수 있음.

PEP 492 에 의해 도입.

 

CPython

파이썬 프로그래밍 언어의 규범적인 구현인데, python.org에서 배포.

이 구현을 Jython 이나 IronPython 과 같은 다른 것들과 구별할 필요가 있을 때 용어 《CPython》 을 사용.

 

decorator (데코레이터)

다른 함수를 돌려주는 함수.

보통 @wrapper 문법을 사용한 함수 변환으로 적용.

더보기

데코레이터의 흔한 예는 classmethod() 과 staticmethod()

데코레이터에 대한 더 자세한 내용은 함수 정의  클래스 정의 의 설명서 참고.

 

 

descriptor (디스크립터)

메서드 __get__() 이나 __set__() 이나 __delete__()를 정의하는 객체.

더보기

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

 

dictionary (딕셔너리)

임의의 키를 값에 대응시키는 연관 배열 (associative array).

키는 __hash__()  __eq__() 메서드를 갖는 모든 객체가 될 수 있음.

펄에서 해시라고 부름.

 

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

이터러블에 있는 요소 전체나 일부를 처리하고 결과를 담은 딕셔너리를 반환하는 간결한 방법. 

 

dictionary view (딕셔너리 뷰)

dict.keys(), dict.values(), dict.items() 메서드가 돌려주는 객체들을 딕셔너리 뷰라고 부름.

이것들은 딕셔너리 항목들에 대한 동적인 뷰를 제공하는데, 딕셔너리가 변경될 때, 뷰가 이 변화를 반영한다는 뜻.

 

docstring (독스트링)

클래스, 함수, 모듈에서 첫 번째 표현식으로 나타나는 문자열 리터럴.

스위트(suit)가 실행될 때는 무시되지만,

컴파일러에 의해 인지되어 둘러싼 클래스, 함수, 모듈의 __doc__ 어트리뷰트로 삽입.

인트로스펙션을 통해 사용할 수 있으므로, 객체의 설명서를 위한 규범적인 장소.

더보기

스위트(suit)는 절에 의해 제어되는 문장들의 그룹.

스위트는 헤더의 콜론 뒤에서 같은 줄에 세미콜론으로 분리된 하나나 그 이상의 단순문일 수 있음.

또는 그다음 줄에 들여쓰기 된 하나나 그 이상의 문장들일 수도 있음.

오직 후자의 형태만 중첩된 복합문을 포함할 수 있음. 

 

duck-typing (덕 타이핑)

올바른 인터페이스를 가졌는지 판단하는데 객체의 형을 보지 않는 프로그래밍 스타일.

대신, 단순히 메서드나 어트리뷰트가 호출되거나 사용.

(《오리처럼 보이고 오리처럼 꽥꽥댄다면, 그것은 오리다.》) 에서 따옴.

특정한 형 대신에 인터페이스를 강조함으로써, 잘 설계된 코드는 다형적인 치환을 허락함으로써 유연성을 개선할 수 있음.

덕 타이핑은 type() 이나 isinstance() 을 사용한 검사를 피합니다.

(하지만, 덕 타이핑이 추상 베이스 클래스 로 보완될 수 있음에 유의.)

대신에, hasattr() 검사나 EAFP 프로그래밍을 씁니다.

 

EAFP

허락보다는 용서를 구하기가 쉽다 (Easier to ask for forgiveness than permission)라는 말의 약자.

이 흔히 볼 수 있는 파이썬 코딩 스타일은, 올바른 키나 어트리뷰트의 존재를 가정하고, 그 가정이 틀리면 예외를 잡음.

이 깔끔하고 빠른 스타일은 많은 try except 문의 존재로 특징지어짐.

이 테크닉은 C와 같은 다른 많은 언어에서 자주 사용되는 LBYL 스타일과 대비됩니다.

 

expression (표현식)

어떤 값으로 구해질 수 있는 문법적인 조각.

다른 말로 표현하면, 표현식은 리터럴, 이름, 어트리뷰트 액세스, 연산자, 함수들과 같은 값을 돌려주는 표현 요소들을 쌓아 올린 것.

다른 많은 언어와 대조적으로, 모든 언어 구성물들이 표현식인 것은 아님.

while처럼, 표현식으로 사용할 수 없는 문장 들이 있음.

대입 또한 문장이고, 표현식이 아님.

 

extension module (확장 모듈)

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

 

f-string (f-문자열)

'f'  'F' 를 앞에 붙인 문자열 리터럴들을 흔히 《f-문자열》이라고 부르는데, 

포맷 문자열 리터럴 의 줄임말. 

PEP 498 참고

 

file object (파일 객체)

하부 자원에 대해 파일 지향적 API(read()  write() 같은 메서드들)를 드러내는 객체.

만들어진 방법에 따라, 파일 객체는 실제 디스크 상의 파일이나 다른 저장 장치나 통신 장치 (예를 들어, 표준 입출력, 인-메모리 버퍼, 소켓, 파이프, 등등)에 대한 액세스를 중계할 수 있음.

파일 객체는 파일류 객체 (file-like objects)나 스트림 (streams) 이라고도 불림.

실제로는 아래와 같은 세 부류의 파일 객체들이 있음.

날(raw) 바이너리 파일, 버퍼드(buffered) 바이너리 파일, 텍스트 파일.

이들의 인터페이스는 io 모듈에서 정의됨.

파일 객체를 만드는 규범적인 방법은 open() 함수를 쓰는 것.

 

file-like object (파일류 객체)

파일 객체 의 비슷한 말.

 

finder (파인더)

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

더보기

로더(loader)란 모듈을 로드하는 객체

 

floor division (정수 나눗셈)

가장 가까운 정수로 내림하는 수학적 나눗셈.

정수 나눗셈 연산자는 // .

 

function (함수)

호출자에게 어떤 값을 돌려주는 일련의 문장들.

없거나 그 이상의 인자 가 전달될 수 있는데, 바디의 실행에 사용될 수 있음. 

 

function annotation (함수 어노테이션)

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

함수 어노테이션은 일반적으로 형 힌트 로 사용.

 

__future__

프로그래머가 현재 인터프리터와 호환되지 않는 새 언어 기능들을 활성화할 수 있도록 하는 가상 모듈.

 

garbage collection (가비지 수거)

더 사용되지 않는 메모리를 반납하는 절차.

파이썬은 참조 횟수 추적과 참조 순환을 감지하고 끊을 수 있는 순환 가비지 수거기를 통해 가비지 수거를 수행.

가비지 수거기는 gc 모듈을 사용해서 제어할 수 있음.

 

generator (제너레이터)

제너레이터 이터레이터 를 돌려주는 함수.

일반 함수처럼 보이는데, 일련의 값들을 만드는 yield 표현식을 포함한다는 점이 다름.

이 값들은 for-루프로 사용하거나 next() 함수로 한 번에 하나씩 꺼낼 수 있음.

보통 제너레이터 함수를 가리키지만, 어떤 문맥에서는 제너레이터 이터레이터 를 가리킴.

의도하는 의미가 명확하지 않은 경우는, 완전한 용어를 써서 모호함을 없애야 함.

 

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

제너레이터 함수가 만드는 객체.

 yield는 일시적으로 처리를 중단하고,

그 위치의 (지역 변수들과 대기 중인 try-문들을 포함하는) 실행 상태를 기억. 

제너레이터 이터레이터가 재개되면, 떠난 곳으로 복귀함.

(호출마다 새로 시작하는 함수와 대비됨)

 

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

이터레이터를 돌려주는 표현식.

더보기

>>> sum(i*i for i in range(10))               # sum of squares 0, 1, 4, ... 81 285

 

generic function (제네릭 함수)

같은 연산을 서로 다른 형들에 대해 구현한 여러 함수로 구성된 함수.

호출 때 어떤 구현이 사용될지는 디스패치 알고리즘 의해 결정됨.

더보기

디스패치란?

프로세스 상태전이에서 준비 리스트의 맨 앞에 있던 프로세스가 CPU를 점유하게 되는 것,

즉 준비 상태에서 실행 상태로 바뀌는 것

 

generic type (제네릭 형)

매개 변수화 할 수 있는 

일반적으로 list와 같은 컨테이너으로 형 힌트 어노테이션에 사용.

 

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

한 번에 오직 하나의 스레드가 파이썬 바이트 코드 를 실행하도록 보장하기 위해 CPython 인터프리터가 사용하는 메커니즘.

 

hash-based pyc (해시 기반 pyc)

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

캐시된 바이트 코드 무효화 참조.

 

hashable (해시 가능)

객체가 일생 그 값이 변하지 않는 해시값을 갖고 (__hash__() 메서드가 필요),

다른 객체와 비교될 수 있으면 (__eq__() 메서드가 필요), 해시 가능하다고 함.

같다고 비교되는 해시 가능한 객체들의 해시값은 같아야 함.

 

IDLE

파이썬을 위한 통합 개발 환경 (Integrated Development Environment).

IDLE은 파이썬의 표준 배포판에 따라오는 기초적인 편집기와 인터프리터 환경.

 

immutable (불변)

고정된 값을 갖는 객체.

불변 객체는 숫자, 문자열, 튜플을 포함.

이런 객체들은 변경될 수 없음.

 

import path (임포트 경로)

경로 기반 파인더 가 임포트 할 모듈을 찾기 위해 검색하는 장소들 (또는 경로 엔트리) 의 목록.

임포트 하는 동안, 이 장소들의 목록은 보통 sys.path 로부터 옴.

하지만 서브 패키지의 경우 부모 패키지의 __path__ 어트리뷰트로부터 올 수도 있음.

 

importing (임포팅)

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

 

importer (임포터)

모듈을 찾기도 하고 로드 하기도 하는 객체.

파인더 이자 동시에 로더 객체임.

 

interactive (대화형)

파이썬은 대화형 인터프리터를 갖고 있는데, 인터프리터 프롬프트에서 문장과 표현식을 입력할 수 있고, 즉각 실행된 결과를 볼 수 있다는 뜻.

 

interpreted (인터프리티드)

바이트 코드 컴파일러의 존재 때문에 그 구분이 흐릿해지기는 하지만, 파이썬은 컴파일 언어가 아니라 인터프리터 언어임.

이것은 명시적으로 실행 파일을 만들지 않고도, 소스 파일을 직접 실행할 수 있다는 뜻.

프로그램이 좀 더 천천히 실행되기는 하지만, 인터프리터 언어는 보통 컴파일 언어보다 짧은 개발/디버깅 주기를 갖음.

 

interpreter shutdown (인터프리터 종료)

종료하라는 요청을 받을 때, 파이썬 인터프리터는 특별한 시기에 진입하는데, 모듈이나 여러 가지 중요한 내부 구조들과 같은 모든 할당된 자원들을 단계적으로 반납.

또한, 가비지 수거기 를 여러 번 호출함.

사용자 정의 파괴자나 weakref 콜백에 있는 코드들의 실행을 시작시킬 수 있음.

종료 시기 동안 실행되는 코드는 다양한 예외들을 만날 수 있는데, 그것이 의존하는 자원들이 더 기능하지 않을 수 있기 때문 (흔한 예는 라이브러리 모듈이나 경고 장치들임).

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

 

iterable (이터러블)

멤버들을 한 번에 하나씩 돌려줄 수 있는 객체.

더보기

이터러블의 예로는 모든 (liststrtuple 같은) 시퀀스 형들, dict같은 몇몇 비 시퀀스 형들, 파일 객체들__iter__() 이나 시퀀스 개념을 구현하는 __getitem__() 메서드를 써서 정의한 모든 클래스의 객체들이 있음.

 

iterator (이터레이터)

데이터의 스트림을 표현하는 객체.

 

key function (키 함수)

키 함수 또는 콜레이션(collation) 함수는 정렬(sorting)이나 배열(ordering)에 사용되는 값을 돌려주는 콜러블.

더보기

예를 들어, locale.strxfrm() 은 로케일 특정 방식을 따르는 정렬 키를 만드는 데 사용.

파이썬의 많은 도구가 요소들이 어떻게 순서 지어지고 묶이는지를 제어하기 위해 키 함수를 받아들임.

이런 것들에는 min(), max(), sorted(), list.sort(), heapq.merge(), heapq.nsmallest(), heapq.nlargest(), itertools.groupby() 이 있음.

 

키 함수를 만드는 방법

예를 들어, str.lower() 메서드는 케이스 구분 없는 정렬을 위한 키 함수로 사용될 수 있음.

대안적으로, 키 함수는 lambda 표현식으로 만들 수도 있음  ex)  lambda r:(r[0], r[2]).

또한, operator 모듈은 세 개의 키 함수 생성자를 제공: attrgetter(), itemgetter(), methodcaller().

키 함수를 만들고 사용하는 법에 대한 예로 Sorting HOW TO 를 참고.

 

lambda (람다)

호출될 때 값이 구해지는 하나의 표현식 으로 구성된 이름 없는 인라인 함수.

람다 함수를 만드는 문법은 

lambda[parameters]: expression

 

LBYL

뛰기 전에 보라 (Look before you leap).

이 코딩 스타일은 호출이나 조회를 하기 전에 명시적으로 사전 조건들을 검사함.

이 스타일은 EAFP 접근법과 대비되고, 많은 if 문의 존재로 특징지어짐.

 

list (리스트)

내장 파이썬 시퀀스.

그 이름에도 불구하고, 원소에 대한 액세스가 O(1)이기 때문에, 연결 리스트(linked list)보다는

다른 언어의 배열과 유사함.

 

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

시퀀스의 요소들 전부 또는 일부를 처리하고 그 결과를 리스트로 돌려주는 간결한 방법. 

더보기

ex)

 

result =['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] 는

0에서 255 사이에 있는 짝수들의 16진수 (0x..) 들을 포함하는 문자열의 리스트를 만듬.

 if 절은 생략할 수 있음.

생략하면, range(256)에 있는 모든 요소가 처리됨.

 

loader (로더)

모듈을 로드하는 객체. 

load_module() 이라는 이름의 메서드를 정의해야 함.

로더는 보통 파인더 가 돌려줌.

자세한 내용은 PEP 302 를, 추상 베이스 클래스  importlib.abc.Loader 를 참고

 

magic method (매직 메서드)

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

 

mapping (매핑)

임의의 키 조회를 지원하고 Mapping 이나 MutableMapping 추상 베이스 클래스 에 지정된 메서드들을 구현하는 컨테이너 객체.

예로는 dict, collections.defaultdict, collections.OrderedDict, collections.Counter 를 들 수 있음.

 

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

sys.meta_path 의 검색이 돌려주는 파인더.

메타 경로 파인더는 경로 엔트리 파인더 와 관련되어 있기는 하지만 다름.

메타 경로 파인더가 구현하는 메서드들에 대해서는 importlib.abc.MetaPathFinder 를 참고.

 

metaclass (메타 클래스)

클래스의 클래스.

클래스 정의는 클래스 이름, 클래스 딕셔너리, 베이스 클래스들의 목록을 만듬.

메타 클래스는 이 세 인자를 받아서 클래스를 만드는 책임을 짐.

대부분의 객체 지향형 프로그래밍 언어들은 기본 구현을 제공함.

파이썬을 특별하게 만드는 것은 커스텀 메타 클래스를 만들 수 있다는 것.

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

 

method (메서드)

클래스 바디 안에서 정의되는 함수.

그 클래스의 인스턴스의 어트리뷰트로서 호출되면,

그 메서드는 첫 번째 인자 (보통 self 라고 불린다) 로 인스턴스 객체를 받음. 

함수  중첩된 스코프 참고

 

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

메서드 결정 순서는 조회하는 동안 멤버를 검색하는 베이스 클래스들의 순서.

2.3 릴리스부터는 The Python 2.3 Method Resolution Order를 참고.

 

module (모듈)

파이썬 코드의 조직화 단위를 담당하는 객체.

모듈은 임의의 파이썬 객체들을 담는 이름 공간을 갖음.

모듈은 임포팅 절차에 의해 파이썬으로 로드됨.

 

module spec (모듈 스펙)

모듈을 로드하는데 사용되는 임포트 관련 정보들을 담고 있는 이름 공간. 

importlib.machinery.ModuleSpec 의 인스턴스.

 

mutable (가변)

가변 객체는 값이 변할 수 있지만 id() 는 일정하게 유지. 

 

named tuple (네임드 튜플)

《named tuple(네임드 튜플)》이라는 용어는 튜플에서 상속하고 이름 붙은 어트리뷰트를 사용하여 인덱스 할 수 있는 요소에 액세스 할 수 있는 모든 형이나 클래스에 적용됨.

형이나 클래스에는 다른 기능도 있을 수 있음.

 

namespace (이름 공간)

변수가 저장되는 장소. 이름 공간은 딕셔너리로 구현됨.

객체에 중첩된 이름 공간 (메서드 에서) 뿐만 아니라 지역, 전역, 내장 이름 공간이 있음.

이름 공간은 이름 충돌을 방지해서 모듈성을 지원.

 

namespace package (이름 공간 패키지)

오직 서브 패키지들의 컨테이너로만 기능하는 PEP 420 패키지.

이름 공간 패키지는 물리적인 실체가 없을 수도 있고, 특히 __init__.py 파일이 없으므로 정규 패키지 와는 다름.

 

nested scope (중첩된 스코프)

둘러싼 정의에서 변수를 참조하는 능력.

예를 들어, 다른 함수 내부에서 정의된 함수는 바깥 함수에 있는 변수들을 참조할 수 있음.

중첩된 스코프는 기본적으로는 참조만 가능할 뿐, 대입은 되지 않는다는 것에 주의.

지역 변수들은 가장 내부의 스코프에서 읽고 씀.

마찬가지로, 전역 변수들은 전역 이름 공간에서 읽고 씀. 

nonlocal 은 바깥 스코프에 쓰는 것을 허락함.

 

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

지금은 모든 클래스 객체에 사용되고 있는 클래스 버전의 예전 이름.

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

 

object (객체)

상태 (어트리뷰트나 값) 를 갖고 동작 (메서드) 이 정의된 모든 데이터.

또한, 모든 뉴스타일 클래스 의 최종적인 베이스 클래스.

 

package (패키지)

서브 모듈들이나, 재귀적으로 서브 패키지들을 포함할 수 있는 파이썬 모듈.

기술적으로, 패키지는 __path__ 어트리뷰트가 있는 파이썬 모듈.

 

parameter (매개변수)

함수 (또는 메서드) 정의에서 함수가 받을 수 있는 인자 (또는 어떤 경우 인자들) 를 지정하는 이름 붙은 엔티티.

더보기

매개변수 종류

1. 위치-키워드 (positional-or-keyword): 위치 인자  키워드 인자 로 전달될 수 있는 인자를 지정.

이것이 기본 형태의 매개변수

예를 들어 다음에서  foo  bar

 

def func(foo, bar=None): ...

 

2. 위치-전용 (positional-only): 위치로만 제공될 수 있는 인자를 지정.

위치 전용 매개변수는 함수 정의의 매개변수 목록에 / 문자를 포함하고 그 뒤에 정의할 수 있음

예를 들어 다음에서 posonly1과 posonly2

 

def func(posonly1, posonly2, /, positional_or_keyword): ...

 

3. 키워드-전용 (keyword-only): 키워드로만 제공될 수 있는 인자를 지정.

키워드-전용 매개변수는 함수 정의의 매개변수 목록에서 앞에 하나의 가변-위치 매개변수나 *를 그대로 포함해서 정의할 수 있음.

예를 들어, 다음에서 kw_only1  kw_only2 

 

def func(arg, *, kw_only1, kw_only2): ...

 

4.가변-위치 (var-positional): (다른 매개변수들에 의해서 이미 받아들여진 위치 인자들에 더해) 제공될 수 있는 위치 인자들의 임의의 시퀀스를 지정.

이런 매개변수는 매개변수 이름에 * 를 앞에 붙여서 정의될 수 있음.

예를 들어 다음에서 args

 

def func(*args, **kwargs): ...

 

5. 가변-키워드 (var-keyword): (다른 매개변수들에 의해서 이미 받아들여진 키워드 인자들에 더해) 제공될 수 있는 임의의 개수 키워드 인자들을 지정.

이런 매개변수는 매개변수 이름에 **를 앞에 붙여서 정의될 수 있습니다,

예를 들어 다음에서 kwargs

 

def func(*args, **kwargs): ...

 

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

 

path entry (경로 엔트리)

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

 

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

sys.path_hooks 에 있는 콜러블 (즉, 경로 엔트리 훅) 이 돌려주는 파인더 인데,

주어진 경로 엔트리 로 모듈을 찾는 방법을 알고 있음.

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

 

path entry hook (경로 엔트리 훅)

sys.path_hook 리스트에 있는 콜러블인데,

특정 경로 엔트리 에서 모듈을 찾는 법을 알고 있다면 경로 엔트리 파인더를 돌려줌.

 

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

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

 

path-like object (경로류 객체)

파일 시스템 경로를 나타내는 객체.

경로류 객체는 경로를 나타내는 str  bytes 객체이거나 os.PathLike 프로토콜을 구현하는 객체.

os.PathLike 프로토콜을 지원하는 객체는 os.fspath() 함수를 호출해서 str  bytes파일 시스템 경로로 변환될 수 있음.

 

PEP

파이썬 개선 제안.

PEP는 파이썬 커뮤니티에 정보를 제공하거나 파이썬 또는 그 프로세스 또는 환경에 대한 새로운 기능을 설명하는 설계 문서.

PEP는 주요 새로운 기능을 제안하고 문제에 대한 커뮤니티 입력을 수집하며 파이썬에 들어간 설계 결정을 문서로 만들기 위한 기본 메커니즘. 

 

portion (포션)

PEP 420 에서 정의한 것처럼, 이름 공간 패키지에 이바지하는 하나의 디렉터리에 들어있는 파일들의 집합.

(zip 파일에 저장되는 것도 가능).

 

provisional API (잠정 API)

잠정 API는 표준 라이브러리의 과거 호환성 보장으로부터 신중히 제외된 것.

인터페이스의 큰 변화가 예상되지는 않지만, 잠정적이라고 표시되는 한, 코어 개발자들이 필요하다고 생각한다면 과거 호환성이 유지되지 않는 변경이 일어날 수 있음.

 

Python 3000

파이썬 3.x 배포 라인의 별명 (버전 3의 배포가 먼 미래의 이야기던 시절에 만들어진 이름.)

이것을 《Py3k》 로 줄여 쓰기도 함.

 

Pythonic

다른 언어들에서 일반적인 개념들을 사용해서 코드를 구현하는 대신, 파이썬 언어에서 가장 자주 사용되는 이디엄들을 가까이 따르는 아이디어나 코드 조각.

예를 들어, 파이썬에서 자주 쓰는 이디엄은 for 문을 사용해서 이터러블의 모든 요소로 루핑하는 것.

 

reference count (참조 횟수)

객체에 대한 참조의 개수.

객체의 참조 횟수가 0으로 떨어지면, 메모리가 반납됨.

참조 횟수 추적은 일반적으로 파이썬 코드에 노출되지는 않지만, CPython 구현의 핵심 요소임.

 sys 모듈은 특정 객체의 참조 횟수를 돌려주는 getrefcount() 을 정의함.

 

regular package (정규 패키지)

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

 

__slots__

클래스 내부의 선언인데, 인스턴스 어트리뷰트들을 위한 공간을 미리 선언하고 인스턴스 딕셔너리를 제거함으로써 메모리를 절감하는 효과를 줌.

 

sequence (시퀀스)

__getitem__() 특수 메서드를 통해 정수 인덱스를 사용한 빠른 요소 액세스를 지원하고, 시퀀스의 길이를 돌려주는 __len__() 메서드를 정의하는 이터러블.

몇몇 내장 시퀀스들을 나열해보면, list, str, tuple, bytes 가 있음. 

 

set comprehension (집합 컴프리헨션)

이터러블에 있는 요소 전체나 일부를 처리하고 결과를 담은 집합을 반환하는 간결한 방법. 

results = {c for c in'abracadabra' if c not in 'abc'}는 문자열의 집합 {'r', 'd'}를 생성.

 

single dispatch (싱글 디스패치)

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

 

slice (슬라이스)

보통 시퀀스 의 일부를 포함하는 객체.

슬라이스는 서브 스크립트 표기법을 사용해서 만듬.

variable_name[1:3:5] 처럼, [] 안에서 여러 개의 숫자를 콜론으로 분리함.

대괄호 (서브 스크립트) 표기법은 내부적으로 slice 객체를 사용함.

 

special method (특수 메서드)

파이썬이 형에 어떤 연산을, 덧셈 같은, 실행할 때 묵시적으로 호출되는 메서드.

이런 메서드는 두 개의 밑줄로 시작하고 끝나는 이름을 갖고 있음.

특수 메서드는 특수 메서드 이름들 문서 참고.

 

statement (문장)

문장은 스위트 (코드의 《블록(block)》) 를 구성하는 부분.

문장은 표현식 이거나 키워드를 사용하는 여러 가지 구조물 중의 하나.

가령 if, while, for.

 

text encoding (텍스트 인코딩)

유니코드 문자열을 바이트열로 인코딩하는 코덱.

 

text file (텍스트 파일)

str 객체를 읽고 쓸 수 있는 파일 객체.

종종, 텍스트 파일은 실제로는 바이트 지향 데이터스트림을 액세스하고 텍스트 인코딩 을 자동 처리함.

텍스트 파일의 예 : 텍스트 모드 ('r' 또는 'w') 로 열린 파일, sys.stdin, sys.stdout, io.StringIO 의 인스턴스를 들 수 있음.

 

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

따옴표 (《) 나 작은따옴표 (〈) 세 개로 둘러싸인 문자열.

그냥 따옴표 하나로 둘러싸인 문자열에 없는 기능을 제공하지는 않지만, 여러 가지 이유에서 쓸모가 있음.

이스케이프 되지 않은 작은따옴표나 큰따옴표를 문자열 안에 포함할 수 있도록 하고, 연결 문자를 쓰지 않고도 여러 줄에 걸칠 수 있는데, 독스트링을 쓸 때 특히 쓸모 있음.

 

type (형)

파이썬 객체의 형은 그것이 어떤 종류의 객체인지를 결정함.

모든 객체는 형이 있습니다. 객체의 형은 __class__ 어트리뷰트로 액세스할 수 있거나 type(obj)로 얻을 수 있음.

 

type alias (형 에일리어스)

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

더보기

형 에일리어스는 형 힌트를 단순화하는 데 유용

ex)

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

 

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

 

type hint (형 힌트)

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

 

universal newlines (유니버설 줄 넘김)

다음과 같은 것들을 모두 줄의 끝으로 인식하는, 텍스트 스트림을 해석하는 태도.

 

variable annotation (변수 어노테이션)

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

 

virtual environment (가상 환경)

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

 

virtual machine (가상 기계)

소프트웨어만으로 정의된 컴퓨터.

파이썬의 가상 기계는 바이트 코드 컴파일러가 출력하는 바이트 코드를 실행함.

 

Zen of Python (파이썬 젠)

파이썬 디자인 원리와 철학들의 목록인데, 언어를 이해하고 사용하는 데 도움이 됨.

이 목록은 대화형 프롬프트에서 《import this》 를 입력하면 보임.

 

728x90
반응형
댓글