我的同事说我最近写的代码崩溃了,那是因为在函数的参数列表中我没有指定Optional[str] = None
,我只有Optional[str]
。
基本上我的函数是这样的:
def a(b: Optional[str]):
if b is None:
<do something>
else:
<do something>
我一直认为可选参数的默认值是None,所以我没有指定默认值。它对我来说没有崩溃,但对我的同事来说却崩溃了,所以我有点困惑。
我的python版本是〉=3。
2条答案
按热度按时间j91ykkif1#
正如上面的注解中提到的,
Optional[str]
是IDE和其他静态分析工具使用的类型提示,而不是默认参数。如果您希望创建一个默认参数,以便可以使用a()
调用函数,那么您确实需要按照您的建议添加= None
。如果您希望使用省略的参数调用此函数,这可能是一个合理的方法。但这取决于您的设计和体系结构。5vf7fwbs2#
给出更多的更新响应。
来自我的文档:
Python文档)也指出新语法是一种将字段设置为可选的方法。
在撰写本文also advocates for it时,FastAPI的创建者Tiangolo似乎是一位备受尊敬的python开发人员。
你认为这是事实吗?我认为这仍然是一个意见问题,因为两者都得到了支持。mypy最近唯一最大的变化是,如果它没有标记为Optional或Union[ Any],它不允许将None指定为默认值|无]。