【发布时间】:2017-05-31 21:47:16
【问题描述】:
我正在使用 PyCharm (Python 3) 编写一个 Python 函数,该函数接受一个字典作为带有 attachment={} 的参数。
def put_object(self, parent_object, connection_name, **data):
...
def put_wall_post(self, message, attachment={}, profile_id="me"):
return self.put_object(profile_id, "feed", message=message, **attachment)
在 IDE 中,attachment={} 是黄色的。将鼠标移到它上面会显示一个警告。
默认参数值是可变的
此检查检测何时作为列表或字典的可变值 在参数的默认值中检测到。
默认参数值仅在函数定义时计算一次 time,表示修改参数的默认值 将影响该函数的所有后续调用。
这是什么意思,我该如何解决?
【问题讨论】:
-
@juanpa.arrivillaga 用户询问 PyCharm 的检查是否给了他/她一个他/她没有预料到的编译器警告。
-
@Vincenzzzochi 是的,但那又如何呢?请问是什么意思?一个不可变的替代方案?如何习惯性地拥有在后续调用中不会保留的可变默认参数?问题不够详细。
-
@juanpa.arrivillaga 用户的问题是“我如何让这个警告消失?”我们都知道他/她的代码中可能存在错误,但提出的问题很明显,您正试图窥探。
-
@Vincenzzzochi 你认为我在“窥探”吗?问一个格式正确的问题是如何“窥探”的?如果有人不想就他们的问题提出问题,他们就不应该提出问题。无论如何,最好让 OP 澄清他们的问题到底是什么,而不是做出假设,即使在这种情况下,我相信你有一个合理的解释。
-
@juanpa.arrivillaga 你在窥探它是否是故意的。你要么 1:不理解他们明显的问题(重读),要么 2:要求他们为自己的问题提供答案,因为你宁愿对他们不理解你理解的基本 python 原理感到高傲和强大。你对我的回应是#2的语气。我们生活在一个基本的隐含解释为王的世界里,我的孩子,你应该在某个时候试一试