在Python中,我们应该在参数列表中设置可选的[str]=None吗?

在Python中,我们应该在参数列表中设置可选的[str]=None吗?,python,python-3.x,Python,Python 3.x,我的同事说我写的代码最近崩溃了,这是因为在函数的参数列表中我没有指定Optional[str]=None。我只有可选的[str] 所以我的函数基本上是这样的: def a(b: Optional[str]): if b is None: <do something> else: <do something> defa(b:可选[str]): 如果b为无: 其他: 我一直认为可选参数的默认值是None,所以我没有指定默认值

我的同事说我写的代码最近崩溃了,这是因为在函数的参数列表中我没有指定
Optional[str]=None
。我只有
可选的[str]

所以我的函数基本上是这样的:

def a(b: Optional[str]):
    if b is None:
        <do something>
    else:
        <do something>
defa(b:可选[str]):
如果b为无:
其他:
我一直认为可选参数的默认值是None,所以我没有指定默认值。它不是为我崩溃,而是为我的同事崩溃,所以我有点困惑


我的python版本是>=3。

如上所述,
可选[str]
是IDE和其他静态分析工具使用的类型提示,而不是默认参数。如果您希望创建一个默认参数,以便可以使用
a()
调用函数,那么您确实需要按照建议添加
=None
。如果您希望使用省略的参数调用此函数,那么这可能是一种合理的方法,但这取决于您的设计和体系结构

你说崩溃是什么意思?你们运行的是同一个python版本吗?我敢肯定,这是一个类型提示,不是默认参数。您的函数签名描述的函数需要一个参数,该参数可以是
str
None
。如果您尝试使用
a()
调用它,它将由于缺少参数而失败。