我有一些具有这种一般结构的代码:
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
只读取而不被函数操作呢?这会影响全球布局吗?此外,如果a
和b
是冗长的列表怎么办?从性能的角度来看,将值从函数传递到函数是否有意义?哪种范式在“pythonic”代码和性能之间提供了最佳折衷?