私はこの一般的な構造を持ついくつかのコードを持っています:
def runSolver():
global a
global b
while (condition) :
# do some stuff
recalculateIntermediateParameters()
# do more stuff
return result
def recalculateIntermediateParameters():
# read globals
# calculate
return recalculatedParameter
# main
if __name__="__main__":
runSolver()
これが最良の実装であるかどうか疑問に思っています。たとえば、グローバルを関数で宣言するのは悪い習慣ですか? Java では、グローバル変数は関数定義の外で宣言するのが最適です。
私の考えでは、これは構文的に「より良い」だろうということでした:
def runSolver():
a = foo
b = bar
# do some stuff
return result
def recalculateIntermediateParameters(a, b):
# do some stuff
return recalculatedParameter
しかし、 と が関数によって操作されずに読み取られるだけの場合a
はどうなるでしょうかb
? それはグローバルな配置に影響しますか? さらに、とが長いリストの場合はどうなるでしょうか。関数から関数に値を渡すことは、パフォーマンスの観点から意味がありますか? 「pythonic」コードとパフォーマンスの間で最適な妥協点を提供するのはどのパラダイムですか?a
b