将全局变量移交给python中的方法?

时间:2014-05-02 08:07:43

标签: python coding-style

这是一个关于良好编程风格的问题。我通常使用Java,现在我在使用Python。在Python中,如果您只想从中读取全局变量,则无需移交全局变量。另一方面,我认为Java语法在他的方面更有帮助。您必须移交所需的变量,这样您就可以看到哪些变量被哪种方法使用,我相信这对于正在阅读您的代码的人有用。

现在你在Python中移交变量虽然你已经可以访问它们了,因为它们是全局的吗?什么是好的' pythonic'方式是什么?

谢谢,

def foo(a):
    a = 2
foo(1)

1被移交'方法foo()。

1 个答案:

答案 0 :(得分:2)

是的,这个

def foo(a):
    a = 2
foo(1)

优先于此

a = 1
def foo():
    a = 2
foo()

想象一下,你有三种方法可以对列表做些什么。

a_list_name = []

def a()
    a_list_name.something

def b()
    a_list_name.something

def c()
    a_list_name.something

a()
b()
c()

如果您定义列表'global',则必须在每个方法中引用该确切列表。如果由于某种原因想要更改列表名称,则现在必须编辑所有3种方法。

但是,如果通过参数传入列表,则只需编辑方法调用,方法代码可以保持不变。喜欢这个

def a(l)
    l.something

def b(l)
    l.something

def c(l)
    l.something

my_list = []
a(my_list)
b(my_list)
c(my_list)

这使您的代码更加模块化,并且最重要的是它使您的代码(方法)可测试因为它们不依赖于在其他地方定义的某个变量