ホームページ >バックエンド開発 >Python チュートリアル >`locals()` を使用する以外に、Python でローカル変数を動的に設定するにはどうすればよいですか?
動的変数設定: locals() を超えて
Python では、変数名自体が動的である場合、ローカル変数を動的に設定することが困難になります。一般的な想定に反して、関数内でローカル変数を設定する場合、locals() ディクショナリへの変更は必ずしも信頼できるとは限りません。
代替アプローチ:
locals() に依存する代わりに)、次のことを考慮してください代替案:
辞書の使用:
辞書を作成し、動的変数名をキーに割り当てます。辞書を通じて値にアクセスします。
d = {} d['xyz'] = 42 print(d['xyz']) # Prints 42
クラス属性の使用:
クラスを定義し、動的変数名を属性として設定します。クラス インスタンスを通じて値にアクセスします。
class C: pass obj = C() setattr(obj, 'xyz', 42) print(obj.xyz) # Prints 42
Locals() の動作について:
一方、locals() は関数内で動作する可能性があります。コンパイラを最適化するには、locals() を直接変更すると予期しない結果が生じる可能性があることに注意することが重要です。返された辞書への割り当ては一時的であり、次の locals() 呼び出しで上書きされます。
IronPython の仕様:
IronPython では、locals() の動作が異なります。別の名前で locals() を呼び出すと、その名前がバインドされていたスコープのローカル変数にバインドされます。ただし、このバインドされた名前を通じて関数ローカルにアクセスすることはできません。
以上が`locals()` を使用する以外に、Python でローカル変数を動的に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。