Python

프레임 객체

type PyFrameObject
…의 일부 안정 ABI (불투명 구조체로).

프레임 객체를 설명하는 데 사용되는 객체의 C 구조체.

이 구조체에는 공개 멤버가 없습니다.

버전 3.11에서 변경: 이 구조체의 멤버들은 공개 C API에서 제거되었습니다. 자세한 내용은 What’s New 항목 을 참조하십시오.

PyEval_GetFrame()PyThreadState_GetFrame() 함수를 사용하여 프레임 객체를 가져올 수 있습니다.

리플렉션 도 참조하십시오.

PyTypeObject PyFrame_Type

프레임 객체의 타입입니다. 파이썬 레이어의 types.FrameType 과 동일한 객체입니다.

버전 3.11에서 변경: 이전에는 <frameobject.h> 를 포함해야만 이 타입을 사용할 수 있었습니다.

PyFrameObject *PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals, PyObject *locals)

새로운 프레임 객체를 생성합니다. 이 함수는 성공할 경우 새 프레임 객체에 대한 강한 참조 를 반환하고, 실패할 경우 예외와 함께 NULL 을 반환합니다.

int PyFrame_Check(PyObject *obj)

obj 이 프레임 객체이면 0이 아닌 값을 반환합니다.

버전 3.11에서 변경: 이전에는 <frameobject.h> 를 포함해야만 이 함수를 사용할 수 있었습니다.

PyFrameObject *PyFrame_GetBack(PyFrameObject *frame)
반환값: 새 참조.

frame 의 다음 외부 프레임을 가져옵니다.

strong reference 를 반환하거나, frame 에 외부 프레임이 없으면 NULL 을 반환합니다. 이 과정에서 예외가 발생하지 않습니다.

Added in version 3.9.

PyObject *PyFrame_GetBuiltins(PyFrameObject *frame)
반환값: 새 참조.

framef_builtins 어트리뷰를 가져옵니다.

strong reference 를 반환합니다. 결과는 NULL 일 수 없습니다.

Added in version 3.11.

PyCodeObject *PyFrame_GetCode(PyFrameObject *frame)
반환값: 새 참조. …의 일부 안정 ABI 버전 3.10 이후로.

frame 코드를 가져옵니다.

Return a strong reference.

결과(프레임 코드)는 NULL 일 수 없습니다.

Added in version 3.9.

PyObject *PyFrame_GetGenerator(PyFrameObject *frame)
반환값: 새 참조.

이 프레임을 소유하는 제너레이터, 코루틴 또는 비동기 제너레이터를 가져오며, 해당 프레임이 제너레이터에 의해 소유되지 않은 경우 NULL 을 반환합니다. 결과값이 NULL 인 경우에도 예외를 발생시키지 않습니다.

강한 참조 또는 NULL 을 반환합니다.

Added in version 3.11.

PyObject *PyFrame_GetGlobals(PyFrameObject *frame)
반환값: 새 참조.

framef_globals 어트리뷰를 가져옵니다.

strong reference 를 반환합니다. 결과는 NULL 일 수 없습니다.

Added in version 3.11.

int PyFrame_GetLasti(PyFrameObject *frame)

framef_lasti 어트리뷰를 가져옵니다.

frame.f_lastiNone 인 경우 -1을 반환합니다.

Added in version 3.11.

PyObject *PyFrame_GetVar(PyFrameObject *frame, PyObject *name)
반환값: 새 참조.

frame 의 변수 name 을 가져옵니다.

  • Return a strong reference to the variable value on success.

  • 변수가 존재하지 않으면 NameError 를 발생시키고 NULL 을 반환합니다.

  • 오류 시 예외를 발생시키고 NULL 을 반환합니다.

name 타입은 str 이어야 합니다.

Added in version 3.12.

PyObject *PyFrame_GetVarString(PyFrameObject *frame, const char *name)
반환값: 새 참조.

PyFrame_GetVar() 와 유사하지만, 변수 이름이 UTF-8로 인코딩된 C 문자열입니다.

Added in version 3.12.

PyObject *PyFrame_GetLocals(PyFrameObject *frame)
반환값: 새 참조.

framef_locals 어트리뷰트를 가져옵니다. 프레임이 최적화된 스코프 를 참조하는 경우, 이 함수는 로컬 변수를 수정할 수 있는 쓰기-투과 프록시 객체를 반환합니다. 다른 모든 경우(클래스, 모듈, exec(), eval())에는 프레임 로컬을 나타내는 매핑을 직접 반환합니다( locals() 에 대해 설명된 바와 같습니다).

Return a strong reference.

Added in version 3.11.

버전 3.13에서 변경: PEP 667 의 일환으로, PyFrameLocalsProxy_Type 인스턴스를 반환합니다.

int PyFrame_GetLineNumber(PyFrameObject *frame)
…의 일부 안정 ABI 버전 3.10 이후로.

frame 이 현재 실행 중인 줄 번호를 반환합니다.

프레임 로컬 프록시

Added in version 3.13.

프레임 객체f_locals 어트리뷰트는 “프레임 로컬 프록시”의 인스턴스입니다. 이 프록시 객체는 해당 프레임의 기본 로컬 딕셔너리에 대한 쓰기 투과(write-through) 뷰를 제공합니다. 이를 통해 f_locals 로 노출되는 변수가 프레임 자체의 실제 로컬 변수와 항상 최신 상태를 유지하도록 보장합니다.

자세한 내용은 PEP 667 을 참조하십시오.

PyTypeObject PyFrameLocalsProxy_Type

프레임 locals() 프록시 객체의 타입.

int PyFrameLocalsProxy_Check(PyObject *obj)

obj 가 프레임 locals() 프록시인 경우 0이 아닌 값을 반환합니다.

레거시 로컬 변수 API

These APIs are soft deprecated. As of Python 3.13, they do nothing. They exist solely for backwards compatibility.

void PyFrame_LocalsToFast(PyFrameObject *f, int clear)

파이썬 3.13 이전에는 이 함수가 ff_locals 어트리뷰트를 내부 “fast” 로컬 변수 배열로 복사하여, 프레임 객체의 변경 사항을 인터프리터에 반영했습니다. clear 가 true인 경우, 이 함수는 로컬 딕셔너리에서 설정 해제된(unset) 변수들을 처리했습니다.

버전 3.13부터 약하게 폐지 <Soft deprecated>: 이제 이 함수는 아무 작업도 수행하지 않습니다.

void PyFrame_FastToLocals(PyFrameObject *f)

파이썬 3.13 이전에는 이 함수가 인터프리터에서 사용하는 내부 “fast” 로컬 변수 배열을 ff_locals 어트리뷰스로 복사하여, 로컬 변수의 변경 사항이 프레임 객체에 반영되도록 했습니다.

버전 3.13부터 약하게 폐지 <Soft deprecated>: 이제 이 함수는 아무 작업도 수행하지 않습니다.

int PyFrame_FastToLocalsWithError(PyFrameObject *f)

파이썬 3.13 이전에는 이 함수가 PyFrame_FastToLocals() 와 유사했으나, 성공 시 0 을 반환하고 실패 시 예외를 설정하며 -1 을 반환했습니다.

버전 3.13부터 약하게 폐지 <Soft deprecated>: 이제 이 함수는 아무 작업도 수행하지 않습니다.

더 보기

PEP 667

내부 프레임

PEP 523 을 사용하는 경우가 아니라면 이 기능은 필요하지 않습니다.

struct _PyInterpreterFrame

인터프리터의 내부 프레임 표현입니다.

Added in version 3.11.

PyObject *PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame);
이것은 불안정 API. 마이너 릴리스에서 예고 없이 변경될 수 있습니다.

Return a strong reference to the code object for the frame.

Added in version 3.12.

int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame);
이것은 불안정 API. 마이너 릴리스에서 예고 없이 변경될 수 있습니다.

마지막으로 실행된 명령의 바이트 오프셋을 반환합니다.

Added in version 3.12.

int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame);
이것은 불안정 API. 마이너 릴리스에서 예고 없이 변경될 수 있습니다.

현재 실행 중인 라인 번호를 반환하며, 라인 번호가 없는 경우 -1을 반환합니다.

Added in version 3.12.

분실물 보관소