2011-09-12 7 views

答えて

5

すべてのグローバルまたはユーザー定義のグローバル?

>>> globals() 
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None} 
>>> x=2 
>>> globals() 
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', 'x': 2, '__doc__': None, '__package__': None} 

自分で定義したものを得るために、あなたがこのリストから、キーが正規表現"__.*?__$"に一致しないすべてのキーと値のペアを除外することができるように思われます。

UPDATEここ

は良い答えである:ここでは

$ python 
Python 2.7.1 (r271:86832, Jun 5 2011, 15:52:25) 
[GCC 4.2.1 (Apple Inc. build 5659)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> x = 3 
>>> import re 
>>> [name for name in dir() if not re.match(r'__.*?__$', name)] 
['re', 'x'] 

私が始まり、2つのアンダースコアで終わる特別な名前を除外してきたので、あなたは彼ら自身使用した場合、彼らは表示されません。正規表現の末尾にある$は、受け入れを防ぐために__abc__1です。また、私はdir()に切り替えました。これは現在のスコープでシンボルを取得しますが、必ずしもグローバルシンボルではありませんが、よりクリーンであるようです。 globals()のような先頭のリスト内包変数は追加されません。

+0

ありがとうございます!ユーザー定義の方が便利です – psihodelia

+0

@psihodelia右は、答えを編集しました。必要に応じて、辞書をフィルタリングするためのコードを追加することができます。 –

+0

ありがとう、私はそれについて新しい質問を投稿しました – psihodelia

6

使用dir()

例えば、

>>> x = 666 
>>> dir() 
['__builtins__', '__doc__', '__name__', '__package__', 'x'] 
1

ローカルスコープで、すべてのモジュールレベル変数、またはlocals()を示しており、globals()を調べることができます。プロンプトでは、これらは同じです。また、vars()には、どこにいても利用可能なすべての名前が表示されます。

2

readlineが有効になっていませんか?インタプリタの履歴を見て、あなたが望むものを見つけることができます。 globals()またはdir()を掘るよりも簡単だと思います。

関連する問題