프레임 객체¶
-
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)¶
- 반환값: 새 참조.
frame 의
f_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)¶
- 반환값: 새 참조.
frame 의
f_globals어트리뷰를 가져옵니다.strong reference 를 반환합니다. 결과는
NULL일 수 없습니다.Added in version 3.11.
-
int PyFrame_GetLasti(PyFrameObject *frame)¶
frame 의
f_lasti어트리뷰를 가져옵니다.frame.f_lasti가None인 경우 -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)¶
- 반환값: 새 참조.
frame 의
f_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()프록시 객체의 타입.
레거시 로컬 변수 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 이전에는 이 함수가 f 의
f_locals어트리뷰트를 내부 “fast” 로컬 변수 배열로 복사하여, 프레임 객체의 변경 사항을 인터프리터에 반영했습니다. clear 가 true인 경우, 이 함수는 로컬 딕셔너리에서 설정 해제된(unset) 변수들을 처리했습니다.버전 3.13부터 약하게 폐지 <Soft deprecated>: 이제 이 함수는 아무 작업도 수행하지 않습니다.
-
void PyFrame_FastToLocals(PyFrameObject *f)¶
파이썬 3.13 이전에는 이 함수가 인터프리터에서 사용하는 내부 “fast” 로컬 변수 배열을 f 의
f_locals어트리뷰스로 복사하여, 로컬 변수의 변경 사항이 프레임 객체에 반영되도록 했습니다.버전 3.13부터 약하게 폐지 <Soft deprecated>: 이제 이 함수는 아무 작업도 수행하지 않습니다.
-
int PyFrame_FastToLocalsWithError(PyFrameObject *f)¶
파이썬 3.13 이전에는 이 함수가
PyFrame_FastToLocals()와 유사했으나, 성공 시0을 반환하고 실패 시 예외를 설정하며-1을 반환했습니다.버전 3.13부터 약하게 폐지 <Soft deprecated>: 이제 이 함수는 아무 작업도 수행하지 않습니다.
더 보기
내부 프레임¶
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.