정의된 모든 변수 보기
저는 현재 파이썬 쉘에서 계산 작업을 하고 있습니다.원하는 것은 Matlab 스타일의 리스트아웃입니다.이 리스트아웃에서는 지금까지 정의된 모든 변수를 확인할 수 있습니다(사용한 이름, 값 등을 알 수 있습니다).
방법이 있을까요? 어떻게 하면 될까요?
사용할 수 있는 몇 가지 사항:
dir()는 범위 내 변수 목록을 제공합니다.globals()글로벌 변수 사전 제공locals()로컬 변수 사전을 제공합니다.
가능하면 IPython을 사용할 수 있습니다.
현재 모든 사용자 정의 변수의 목록을 가져오기 위해 IPython은 다음과 같은 마법 명령을 제공합니다.who(만화는 앞에 붙여야 합니다.%다음 경우를 제외하고automagic기능을 유효하게 합니다).
In [1]: foo = 'bar'
In [2]: %who
foo
를 사용할 수 있습니다.whos자세한 내용은 이쪽에서 확인하세요.
In [3]: %whos
Variable Type Data/Info
----------------------------
foo str bar
이용할 수 있는 다른 마술들이 많이 있다.IPython은 기본적으로 Python의 스테로이드 통역사이다.한 가지 편리한 마법은store이를 통해 세션 간에 변수를 저장할 수 있습니다(사용:pickle).
주의: IPython Dev와 관련된 것은 아닙니다.그냥 만족하는 사용자입니다.
편집:
모든 마법 명령은 IPython 문서에서 찾을 수 있습니다.
이 문서에는 Jupyter 노트북의 마법 명령어 사용에 대한 유용한 섹션도 포함되어 있습니다.
이름을 가져오려면:
for name in vars().keys():
print(name)
값을 가져오려면:
for value in vars().values():
print(value)
vars()는 오브젝트 자체 내에서 정의되어 있는 변수를 확인하기 위해서도 옵션 인수를 사용합니다.
RedBlue Thing과 아날로그는 다음과 같이 말합니다.
dir()범위 변수 목록을 제공합니다.globals()글로벌 변수 사전 제공locals()로컬 변수 사전을 제공합니다.
변수를 생성한 후 대화형 셸(버전 2.6.9) 사용a = 1그리고.b = 2,입니다.dir()주다
['__builtins__', '__doc__', '__name__', '__package__', 'a', 'b']
입니다.locals()주다
{'a': 1, 'b': 2, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': None}
입니다.globals()과 정확히 같은 대답을 하다locals()이 경우는,
저는 어떤 모듈에도 들어가 본 적이 없기 때문에 모든 변수는 로컬 변수와 글로벌 변수로 사용할 수 있습니다. locals()그리고.globals()변수 값 및 이름을 나열합니다.dir()에는 이름만 나열되어 있습니다.
모듈을 Import하여 실행하는 경우locals()또는globals()모듈 내부,dir()여전히 소수의 변수만 제공합니다.__file__위의 변수와 비교합니다. locals()그리고.globals()또한 동일한 변수를 나열하지만 사전 값을 인쇄하는 과정에서__builtin__내장 함수, 예외 및 "와 같은 유형의 훨씬 많은 변수가 나열됩니다.'type': <type 'type'>단순한 브리핑이 아니라<module '__builtin__' (built-in)>위와 같이
자세한 내용은dir()New Mexico Tech의 Python 2.7 빠른 참조 또는 ibiblio.org의 dir() 함수를 참조하십시오.
자세한 내용은locals()그리고.globals()Dive Into Python에서 현지인과 글로벌을 보고 New Mexico Tech에서 글로벌에 대한 페이지를 볼 수 있습니다.
[댓글 : @Kurt : ]여기서 enumerate-or-list-all-variables-in-a-program-of-your-favorite-language-list-all-variables-in-a-program-of-your-favorite-language-language 링크를 지정했지만문제는 다음과 같습니다.type(name)그 예에서는 항상 돌아올 것이다.<type 'str'>변수 목록이 표시되므로 질문에 답변할 수 있지만 변수 옆에 잘못된 유형이 나열됩니다.이 예에서는 모든 변수가 문자열이기 때문에 이 값은 명확하지 않습니다.그러나 반환되는 것은 변수 유형이 아니라 변수 이름의 유형입니다.이 문제를 해결하려면:print type(name)print eval('type(' + name + ')')답변란에 코멘트를 투고하게 되어 죄송합니다만, 코멘트를 투고할 권한이 없으며, 다른 질문은 종료되었습니다.]
locals()를 인쇄하다
편집은 코멘트에서 속행됩니다.
인쇄할 때 조금 더 예쁘게 보이려면:
import sys, pprint
sys.displayhook = pprint.pprint
locals()
그러면 더 세로로 출력할 수 있습니다.
globals(),locals(),vars() , , , , 입니다.dir()을 사용하다
조금 더 스마트한 방법(점수 3):
def printvars():
tmp = globals().copy()
[print(k,' : ',v,' type:' , type(v)) for k,v in tmp.items() if not k.startswith('_') and k!='tmp' and k!='In' and k!='Out' and not hasattr(v, '__call__')]
또는 객체의 변수를 출력하지 않을 경우:
def printObj(Obj, OutputMax=100):
tmp = Obj.__dict__
[print(k,' : ',str(v)[:OutputMax],' type:' , type(v)) for k,v in tmp.items() if not k.startswith('_') and k!='tmp' and k!='In' and k!='Out' and not hasattr(v, '__call__')]
dir()를 지정하면 현재 Import된 모든 AND 변수가 반환됩니다.
변수를 원하는 경우 varScore, varNames 등 dir에서 추출하기 쉬운 이름 지정 방식을 제안합니다.
이렇게 하면 다음과 같이 간단하게 할 수 있습니다.
for vars in dir():
if vars.startswith("var"):
print vars
편집
모든 변수를 나열하지만 다음과 같은 Import된 모듈 및 변수는 제외합니다.
__builtins__
다음과 같은 것을 사용할 수 있습니다.
import os
import re
x = 11
imports = "os","re"
for vars in dir():
if vars.startswith("__") == 0 and vars not in imports:
print vars
보시다시피 변수(태플)이기 때문에 변수 "변수"가 표시됩니다.간단한 해결 방법은 Imports라는 단어를 Imports 자체에 추가하는 것입니다.
이는 인터랙티브셸에서 정의해야 합니다.
def MyWho():
print [v for v in globals().keys() if not v.startswith('_')]
다음으로 다음 코드를 예로 들 수 있습니다.
>>> import os
>>> import sys
>>> a = 10
>>> MyWho()
['a', 'MyWho', 'sys', 'os']
2.7 Python 2.7 인터프리터입니다.whosMATLAB mat에 에 mat Python.MATLAB 아날로그(변수 이름, 유형 및 값/데이터)와 동일한 세부 정보가 표시됩니다.
Python에서는 Python이 "Python"이라는 해 주십시오.whos에, 「연속 네임스페이스」의 모든 변수를 나타냅니다.
언급URL : https://stackoverflow.com/questions/633127/viewing-all-defined-variables
'programing' 카테고리의 다른 글
| Java 클래스에서 선언된 정적 필드만 검색합니다. (0) | 2022.10.27 |
|---|---|
| jQuery를 사용하여 URL에서 앵커를 가져오려면 어떻게 해야 합니까? (0) | 2022.10.27 |
| mappedBy 알 수 없는 대상 엔티티 속성 (0) | 2022.10.26 |
| Java 메서드에서 불필요한 반환을 방지하려면 어떻게 해야 합니까? (0) | 2022.10.26 |
| JPA 2에서 CriteriaQuery를 사용하여 결과를 카운트하는 방법 (0) | 2022.10.26 |