一个Modulelevel变量和一个同名的函数参数:坏习惯?

2024-03-29 11:19:35 发布

您现在位置:Python中文网/ 问答频道 /正文

x同时作为模块级变量名和函数参数名是一种糟糕的做法吗?你知道吗

x = 2

def f(x):
    print x

f(x)

我问这个是因为派林抱怨说:

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

Tags: 模块namefromdefline函数参数scopeprint
1条回答
网友
1楼 · 发布于 2024-03-29 11:19:35

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

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

def f(n):
    print n

不必要的混淆可能是您确实想要使用全局变量x,或者您可能会比较来自不同范围的x的值,并最终调试为什么它们的值不相同。你知道吗

但是,如果在另一个作用域中使用先前定义的变量名是传递该变量应该传递的信息的最佳方式,那么就使用它。你知道吗

相关问题 更多 >