比较Python构造函数中传递参数的不同方法



根据我的研究,对于在Python类中创建新对象,有几种方法可以传入args。

name: str = None

name: Optional[str] = None

**kwargs

我觉得效果差不多?即使我做了name: str = 'John',我仍然可以跳过传递这个arg,但对象仍然将John作为年龄默认值。

所以我很好奇他们有什么不同?也许他们在其他情况下有巨大的差异

所以要澄清一下。你发布的不是";传入";args,但设置默认为参数。

忽略**kwargs,因为这与其他两个完全不同。真的没有区别。

如果你打开PyCharm并执行这两个功能。。。

def test(name: str = None):
pass
def test2(name: Optional[str] = None):
pass

如果你把鼠标悬停在参数上,pycharm显示两者相等";str|None"。

类型提示Optional在mypy等类型检查工具中确实有一些用处,因为它"更清楚地告诉"检查程序您想要做什么,但除此之外,它们与python是相同的。

最新更新