は、私は次のように関数定義を持つプロジェクトを維持:`locals()`のアクセスできない `.0`変数がメモリやパフォーマンスに影響しますか?
def f(a, (b1, b2), c):
print locals()
私は.1
キーが値(b1, b2)
と、locals()
に登場したことを発見したコードをデバッグしている間。
def f((a1, a2)):
print locals()
値(a1, a2)
とlocals()
で.0
キーを持っています。簡単なチェックは、次のような関数定義があることを明らかにしました。私はこの動作に驚いていましたが、Pythonのドキュメントには何の情報も見つかりませんでした。
私の質問は次のとおりです。そうでなければアクセスできない位置変数はメモリやパフォーマンスに影響しますか?彼らはどこに文書化されていますか?彼らはどのような目的を果たしていますか?
問題のプロジェクトはSAXベースのfeedparserであり、この動作の影響を受ける可能性のある数十または数百の関数呼び出しを持つ可能性があります。
このタプルの自動タプルPython 3では明示的に削除されていましたが、私が正しく思い出したのは、当時は文法の事故として記述されていました。それは確かに私が見たいと思うスタイルではありません。 –
お役立ち情報そうです、 '2to3'ツールは自動的に'(b1、b2) 'の構文を変数名' xxx_todo_changeme'に置き換えます。それにもかかわらず、この現象を説明するのに役立つリンク、または明示的な削除に関するリンクがありますか? –
@Kurt McKee [PEP 3113 - タプルパラメータの解凍](http://www.python.org/dev/peps/pep-3113/)。 –