在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()
调用它,它将由于缺少参数而失败。