Python:给参数与函数同名是坏风格吗?

3 投票
4 回答
2709 浏览
提问于 2025-04-16 06:04

考虑以下代码:

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

localize这个变量用来表示是否应该遵循全局的本地化设置。它在三层代码中都用同样的名字来调用。现在有个问题,

  • 是用参数名来覆盖函数名更糟糕,还是
  • 在这个函数中用一个和其他地方完全不同的名字,尽管它们的意思完全一样?

localize这个函数不使用递归,所以不能自己调用自己并不是个问题。

/编辑:改变函数名是不可能的,因为它是公共API。唯一可以调整的就是参数名。

4 个回答

1

更有可能发生的情况是,调用者因为需要传入一个不同名字的参数而感到困惑,还是说以后有人会用递归来重构这个代码呢?如果你需要使用递归的话,可以考虑用互递归,这样就能避免变量名冲突的问题。

1

根据PEP8的规定,这种命名方式并没有什么问题,但我建议还是不要用这种命名方式,虽然从技术上来说是可以的。

如果你在一个项目中,最好一起制定一个命名规则,这样就不会对名字相似的变量和函数感到困惑。PEP8建议在变量名后面加个下划线,以避免和保留字冲突,你在这种情况下也可以这样做。

11

我觉得这样写不好。与其改函数的名字,不如改参数的名字。你可以试试用 localelocalization 这样的名字。总的来说,用名词比用动词更合适。

撰写回答