Python:给一个与函数同名的参数是不好的风格?

时间:2010-10-25 20:55:39

标签: python coding-style

请考虑以下代码:

def localize(value, localize=None):
    # do something with the localize argument

localize变量包含是否应该遵守全局本地化设置的信息。它通过三层代码以相同的名称调用。什么是较小的邪恶,

  • 使用参数名称或
  • 隐藏函数名称
  • 在此函数中使用的名称与在代码库的其余部分中使用的名称不同,尽管它们具有完全相同的含义?

localize函数不使用递归,因此无法调用自身不是问题。

/ edit:更改函数名称是不可能的,因为它是公共API。唯一的摆动空间在参数名称中。

4 个答案:

答案 0 :(得分:11)

我会说这是糟糕的风格。您可以更改参数名称,而不是更改函数名称。也许您可以使用localelocalization之类的名称?无论如何,名词可能是比动词更好的选择。

答案 1 :(得分:1)

更有可能发生的事情是,调用者因为必须传入不同的命名参数而感到困惑,或者有人会在以后通过递归重构它?如果需要使用递归,则可以始终使用相互递归来远离阴影范围。

答案 2 :(得分:1)

根据PEP8,没有什么可以反对这种做法,但我建议不要使用这种命名,尽管在技术上使用它没有问题。

如果您是项目的一部分,请联合声明一个命名约定,该约定不允许您对类似命名的变量和函数感到困惑。如果与保留字冲突,PEP8建议在变量后附加下划线,在您的情况下也可以这样做。

答案 3 :(得分:1)

是的,这是糟糕的形式,因为它令人困惑(一个词有2个含义)。

我会将其重写为布尔值,默认为True:

def localize(value, use_global_setting=True):
    ...