代码之家  ›  专栏  ›  技术社区  ›  Benjamin Wohlwend

Python:给一个和函数同名的参数命名是不是不好?

  •  3
  • Benjamin Wohlwend  · 技术社区  · 15 年前

    请考虑以下代码:

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

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

    • 用参数名隐藏函数名,或

    这个 本地化 函数不使用递归,因此无法调用自身不是问题。

    4 回复  |  直到 15 年前
        1
  •  11
  •   Mark Byers    15 年前

    我认为那是不好的风格。您可以更改参数名,而不是更改函数名。也许你可以用这样的名字 locale localization ? 不管怎样,名词可能是比动词更好的选择。

        2
  •  1
  •   gtrak    15 年前

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

        3
  •  1
  •   Soravux    15 年前

    PEP8 ,但我建议不要使用这种命名,尽管从技术上讲使用它没有问题。

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

        4
  •  1
  •   Steven Rumbalski    15 年前

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

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