gpt4 book ai didi

python类默认参数

转载 作者:太空狗 更新时间:2023-10-30 01:19:52 26 4
gpt4 key购买 nike

我想知道是否有人可以解释为什么这两个示例最终会产生相同的结果:

class Myclass(): 

def __init__ (self, parameter=None)

if parameter is None:
self.parameter = 1.0
else:
self.parameter = parameter

和:

class Myclass():

def __init__ (self, parameter=None)

if parameter:
self.parameter = parameter
else:
self.parameter = 1.0

我凭直觉理解第一个“如果...是无”,但我很难理解第二个示例。两者都可以使用吗?

我意识到这可能是一个非常简单的问题,因此,如果有人可以指导我阅读任何有助于理解差异的读物,那将是非常好的。

谢谢!

最佳答案

它们不等价,在第一个代码片段中,parameter 将是 1.0 当且仅当 parameterNone,但在第二个中,对于任何 falsy valueparameter 都将为 1.0。以下值在 Python 中都是 falsy:

  • 错误

  • 任何数字类型的零,例如 0、0L、0.0、0j。

  • 任何空序列,例如,''、()、[]。

  • 任何空映射,例如 {}。

  • 用户定义类的实例,如果该类定义了一个nonzero() 或len() 方法,当该方法返回整数零或 bool 值时值为假。

所以第一个代码片段更严格。官方文档请引用:

关于python类默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43483709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com