function
オブジェクトに添付されている__code__
オブジェクトを調べることで、あなたが望むものが達成できると信じています。例:ファイルで
はfuncs.py
と呼ばれる:
インタプリタセッションで今すぐ
external_object = "external object"
def f():
print(external_object)
nested = "nested"
def g():
print(nested)
return g
、:
タイプ "ヘルプ"、 "著作権"、 "クレジット" または "ライセンス" の詳細については、 。
>>> import funcs
>>> funcs.f.__code__.co_names
('print', 'external_object')
>>>
それとも、ローカル変数をしたい場合:あなたはまた、無料の変数のように、他のものにアクセスすることができます
>>> funcs.f.__code__.co_cellvars
('nested',)
。お知らせ、nested
はg
のため閉鎖中の自由変数である:
>>> g = funcs.f()
external object
>>> g.__code__.co_names
('print',)
>>> g.__code__.co_freevars
('nested',)
>>>
は、利用可能な属性hereについては、こちらをご覧ください。私は
彼らの定義は通訳、 の将来のバージョンで変更される可能性があり、としてドキュメントに警告し以来、おそらく、これに依存しているために素晴らしいアイデアではありません、注意しますが、彼らは完全を期すためにここに記載されています。
これはおそらく私自身の理解の欠如ですが、関数をメモするのはどういう意味ですか?そして、外部から注入された依存関係は何ですか?外の図書館はありますか? – mitoRibo
また、*関数*はメソッドではありません。 –
説明をありがとう。まだ私の頭の中でコンテキストの切り替えフェーズで:P – Akshay