这并不是一个巨大的问题,但从风格上考虑,我想知道如何最好地指示可选函数参数...
在类型提示之前,参数b
的写法是这样的:
def my_func(a, b = None)
在Python 3.10之前,使用类型提示:
def my_func(a, b: Optional[str])
使用Python 3.10的美妙管道类型符号(参见PEP 604):
def my_func(a, b: str | None)
三种选项中,后者似乎是显而易见的选择,但我想知道这是否完全消除了需要指定默认的None值,其值为:
def my_func(a, b: str | None = None)
编辑:感谢@deceze和@jonrsharpe指出def my_func(a, b: str | None)
仍需要您传递一个值到b
:如果您想要这个值为None
,则必须显式地传递None
。
因此,最简洁的方法是确保b
是可选的(即调用者不需要传递任何值):
def my_func(a, b: str = None)
在风格上,包含显式类型声明的方式是def my_func(a, b: str | None = None)
,也就是显式的可选类型加上默认值None
,这种方式是否一直都是一个选项?
b: Optional[str]
时,实际上在调用函数时仍需要传递一个值给b
。 - decezedef my_func(a,b: Optional[str])
中,b
不是可选的(但您_可以_明确传递None
)! - jonrsharpe