重新分配方法参数是好的还是坏的做法是否达成共识?

时间:2019-04-26 16:05:53

标签: python standards readability code-readability pep

我想写一个这样的方法:

def method(self, long_api_parameter_name=None):
    if long_api_parameter_name is None:
        long_api_parameter_name = self.DEFAULT_X

    return self.another_method(long_api_parameter_name)

但是,建议我不要重新分配方法参数。社区内部是否有任何[半]官方建议或至少达成共识?

2 个答案:

答案 0 :(得分:0)

我可能会写为

long_api_parameter_name = long_api_parameter_name or self.DEFAULT_X

为简洁起见,是的,这是Python中非常普遍的模式。

更新

如果传递的值可能为false,则必须做一些更复杂的事情:

NOT_PASSED = object()

def method(self, long_api_parameter_name=NOT_PASSED):
    long_api_parameter_name = long_api_parameter_name if long_api_parameter_name is not NOT_PASSED else self.DEFAULT_X

这将允许错误的值-甚至显式传递None,但如果未指定任何内容,则返回默认值。

答案 1 :(得分:0)

据我所知,在Python文档或PEP样式指南中,没有关于重新分配方法参数的正式声明。

brunns的答案是实现所需目标的好方法。

**请注意,该值只会在调用method的过程中重新分配...请参见this question

有些人认为这种做法不好,因为还有其他一些语言,其标准指出不应重新分配方法/函数参数。 (例如Javascript