私はPythonのベストプラクティスを理解しようとしています。グローバル変数にアクセスする(しかし変更しない)関数を定義する場合、関数内で変数をグローバルとして指定する必要はありません。しかし、グローバル変数を関数に渡す方が速いのでしょうか?私は、グローバル変数を検索するコストについていくつか言及してきたので尋ねますが、私は理解しているかどうかはわかりません。たとえば、Python関数:グローバル変数にアクセスする場合にのみ渡しますか?
def f1(localList):
for element in localList:
if element in globalSet:
pass #do stuff.
def f2(localList, localSet):
for element in localList:
if element in localSet:
pass #do stuff.
globalList = <arbitrary list>
globalSet = <arbitrary set>
f1(globalList)
f2(globalList, globalSet)
f2は、f1と比較して一般的にはより高速で優れた/より優れた「pythonic」アプローチと見なされますか?
あなたは何をしようとしているのかの本当の例を共有できますか?他のアプローチよりも1つのアプローチを選択すると、設計上の選択肢になる可能性があります。 (悪いデザインはグローバルを使用していますが、どちらの場合でも使用していないことを確認してください)。 –
実際に私はこの場合、特別な例はありません。それは私がいくつかのスクリプトを書いたことであり、これについての一般的なルールや規約があるかどうかは私の心の中にあります。私はPythonがf1でglobalSetに透過的にアクセスできるようにしていますが、globalSetが大きい場合はf2が望ましいと思われますが、globalSetをf1のループの繰り返しごとに調べなければならないのでしょうか? – user1344806
いいえ、それはその理由の方が好きです。それは本当に重要です。あなたが実際に構築しているものに応じてデザインを選択します。 Pythonでは、物事を行うための明白な方法しかないはずなので、あなたの疑念は悪いデザインのサインかもしれません。たぶんクラスが必要なのかもしれません。 –