我想写一个这样的方法:
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)
但是,建议我不要重新分配方法参数。社区内部是否有任何[半]官方建议或至少达成共识?
答案 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)