programing

정의된 모든 변수 보기

newsource 2022. 10. 27. 21:48

정의된 모든 변수 보기

저는 현재 파이썬 쉘에서 계산 작업을 하고 있습니다.원하는 것은 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