Python:给参数与函数同名是坏风格吗?
考虑以下代码:
def localize(value, localize=None):
# do something with the localize argument
localize
这个变量用来表示是否应该遵循全局的本地化设置。它在三层代码中都用同样的名字来调用。现在有个问题,
- 是用参数名来覆盖函数名更糟糕,还是
- 在这个函数中用一个和其他地方完全不同的名字,尽管它们的意思完全一样?
localize
这个函数不使用递归,所以不能自己调用自己并不是个问题。
/编辑:改变函数名是不可能的,因为它是公共API。唯一可以调整的就是参数名。
4 个回答
1
更有可能发生的情况是,调用者因为需要传入一个不同名字的参数而感到困惑,还是说以后有人会用递归来重构这个代码呢?如果你需要使用递归的话,可以考虑用互递归,这样就能避免变量名冲突的问题。
1
根据PEP8的规定,这种命名方式并没有什么问题,但我建议还是不要用这种命名方式,虽然从技术上来说是可以的。
如果你在一个项目中,最好一起制定一个命名规则,这样就不会对名字相似的变量和函数感到困惑。PEP8建议在变量名后面加个下划线,以避免和保留字冲突,你在这种情况下也可以这样做。
11
我觉得这样写不好。与其改函数的名字,不如改参数的名字。你可以试试用 locale
或 localization
这样的名字。总的来说,用名词比用动词更合适。