[PYTHON] 파이썬에서 지역 주민이 네임 스페이스를 호출하지 못하도록합니다.
PYTHON파이썬에서 지역 주민이 네임 스페이스를 호출하지 못하도록합니다.
파이썬에서 호출 된 함수에서 로컬 변수를 가져 오려고합니다. 이 일을 할 수있는 방법이 있습니까? 나는 이것이 대부분의 프로그래밍에 적합하지 않다는 것을 알고 있지만, 기본적으로 디버거를 만들고있다. 예 :
def show_locals():
# put something in here that shows local_1.
local_1 = 123
show_locals() # I want this to show local_1.
show_locals의 본문에 무엇을 넣을 까? 호출 문을 수정해야한다면 최소한의 수정은 무엇입니까?
주의 : show_locals가 호출자와 다른 모듈에있을 때 이것이 작동해야합니다.
해결법
-
==============================
1.디버거를 작성하는 경우 inspect 모듈을 많이 사용하는 것이 좋습니다.
디버거를 작성하는 경우 inspect 모듈을 많이 사용하는 것이 좋습니다.
def show_callers_locals(): """Print the local variables in the caller's frame.""" import inspect frame = inspect.currentframe() try: print(frame.f_back.f_locals) finally: del frame
-
==============================
2.당신은 파이썬 내장, dir () 또는 vars ()를 사용합니다 :
당신은 파이썬 내장, dir () 또는 vars ()를 사용합니다 :
바르 (물체)
dir ()을 사용하는 예제는 다음을 참조하십시오.이 게시물
vars를 사용하는 예제 :
>>> class X: ... a=1 ... def __init__(self): ... b=2 ... >>> >>> vars(X) {'a': 1, '__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x100488848>} >>> >>> vars(X()) {}
잠재적으로 문제가되는 사실 : 새로운 스타일 클래스는 동일한 결과를 반환하지 않습니다.
>>> class X(object): ... a=1 ... def __init__(self): ... b=2 ... >>> >>> vars(X) <dictproxy object at 0x1004a1910> >>> vars(X()) {}
또한 인스턴스화 된 클래스 (새롭고 오래된 스타일)의 경우 인스턴스화 한 후에 변수를 추가하면 vars가 다음과 같이 객체의 dict을 반환합니다.
>>> x = X() >>> x.c = 1 >>> vars(x) {'c': 1} >>>
참조 : http://docs.python.org/library/functions.html#vars
from https://stackoverflow.com/questions/6618795/get-locals-from-calling-namespace-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] WCF와 파이썬 (0) | 2018.11.12 |
---|---|
[PYTHON] Python (팬더) 멀티 인덱스 데이터 프레임의 각 레벨에 부분합 추가 (0) | 2018.11.12 |
[PYTHON] 파이썬에서 범위 함수의 값 건너 뛰기 (0) | 2018.11.12 |
[PYTHON] Cython 패키지와 __init __. pyx : 가능한가? (0) | 2018.11.12 |
[PYTHON] 파이썬 상속 - 함수 비활성화 방법 (0) | 2018.11.12 |