此问题在此处已有答案:
How can I avoid issues caused by Python's early-bound default parameters (e.g. mutable default arguments "remembering" old data)?(10个答案)5年前关闭.
def save_file(self, outputfilename = self.image_filename): self.file.read(outputfilename) ....
在第一行给出了NameError: name 'self' is not defined。看起来Python不接受它。我如何重写代码,使它不会引发异常?
NameError: name 'self' is not defined
5m1hhzi41#
使用默认值None并检测它。
None
def save_file(self, outputfilename=None): if outputfilename is None: outputfilename = self.image_filename self.file.read(outputfilename) ....
gcuhipw92#
documentation声明:执行函数定义时计算默认参数值。这就解释了为什么示例不能被引用。正如其他人所说,使用None作为默认值,并在示例可用时在函数执行时修复值。
jtoj6r0c3#
def save_file(self, outputfilename=None): outputfilename = outputfilename or self.image_filename self.file.read(outputfilename)
甚至
def save_file(self, outputfilename=None): self.file.read(outputfilename or self.image_filename)
对于一个变量,这可能没什么,但是如果你有,比如说,5个变量,在我看来,这会使代码更容易阅读。
2mbi3lxu4#
def save_file(self, outputfilename = None): if not outputfilename: outputfilename = self.image_filename self.file.read(outputfilename) ....
4条答案
按热度按时间5m1hhzi41#
使用默认值
None
并检测它。gcuhipw92#
documentation声明:
执行函数定义时计算默认参数值。
这就解释了为什么示例不能被引用。正如其他人所说,使用None作为默认值,并在示例可用时在函数执行时修复值。
jtoj6r0c3#
甚至
对于一个变量,这可能没什么,但是如果你有,比如说,5个变量,在我看来,这会使代码更容易阅读。
2mbi3lxu4#