(Python)我应该使用参数还是使其成为全局的?

(Python)我应该使用参数还是使其成为全局的?,python,parameters,global-variables,Python,Parameters,Global Variables,我有许多函数都共享相同的参数。他们将多次输入和输出此参数 例如: a = foo a = fun(a) a = bar(a) def fun(a): ... return a def bar(a): ... return a 在语法上更正确的是,通过函数传递参数,还是让所有函数都可以全局访问它 a = foo fun() bar() def fun(): global a ... def bar(): global a

我有许多函数都共享相同的参数。他们将多次输入和输出此参数

例如:

a = foo
a = fun(a)
a = bar(a)

def fun(a):
     ...
     return a

def bar(a):
     ...
     return a
在语法上更正确的是,通过函数传递参数,还是让所有函数都可以全局访问它

a = foo
fun()
bar()

def fun():
    global a
    ...

def bar():
    global a
    ...

对于方法的可重用性,传递参数是更好的方法。

变量越本地化越好

这实际上是任何编程语言的公理


struct
s在C语言中(以及FORTRAN等其他语言中的等价物)就是从这一认识中成长起来的,随后不久就出现了面向对象的编程。

我同意其他答案,但只是为了完成,正如其他人所指出的,在这里类听起来是个好主意。请考虑以下内容:

class myClass(object):
    def __init__(self, foo):
        self.a = foo

    def fun(self):
        # do stuff to self.a

    def bar(self):
        # do something else to self.a 

c = myClass(foo)
c.fun()
c.bar()

使用参数可以更容易地重用代码。如果函数都是相关的,并且处理类似的数据,那么你也可以考虑制作一个类来捆绑所有的东西。这也是高度可恢复的。在这种情况下,最好传递一个对象并操作字段。我强烈反对使用全局变量。它们很少在实践中使用。每当你发现自己在想“我应该使用全局吗?”时,默认为“否”。这对我来说就像一个类。是否存在传递许多参数不合理的情况?@tisacondurum你可以始终将数据包装在一个容器或对象中,并传递该容器或对象,而不是多个参数。。。