模块级变量和具有相同名称的函数参数:不好的做法?

时间:2014-11-08 03:36:58

标签: python python-2.7 pylint

x作为模块级变量名称和函数参数名称是不好的做法?

x = 2

def f(x):
    print x

f(x)

我问这个是因为pylint抱怨它:

W:  3, 6: Redefining name 'x' from outer scope (line 1) (redefined-outer-name)

1 个答案:

答案 0 :(得分:1)

不,它不是,这就是为什么你看到警告(W)而不是错误(E)。

一般来说,这取决于您的使用案例。例如,如果您有一个备用变量名称,它可以类似地传达与当前变量名称相同的含义,那么最好使用它来避免不必要的混淆。对于代码中的示例,您可以非常轻松地使用:

def f(n):
    print n

不必要的混淆可能是你确实想要使用全局变量x,或者你可能最终比较不同范围的x值并最终调试它们的值不相同的原因。

但是,如果在另一个范围内使用先前定义的变量名称是传达变量应该传达的信息的最佳方式,那么请使用它。