정의된 모든 변수 보기
저는 현재 파이썬 쉘에서 계산 작업을 하고 있습니다.원하는 것은 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 인터프리터입니다.whos
MATLAB 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 |