2023-06-03 22:13:00 发布
网友
我的怀疑很简单。在使用可选参数时,我应该努力与参数类型保持一致吗
举个例子:
def example_method(str_arg_1=None): if str_arg_1 is not None: # do something
我的arg总是str,除非它没有在方法调用中传递,所以我不确定在这种情况下使用None是否是一种好的做法
arg
str
None
我之所以产生这个疑问是因为我不知道如何编写docstring,str_arg_1是否考虑str即使有时是None
str_arg_1
名字没有类型;只有它们引用的值才有类型。在这种情况下,记录str_arg_1将引用str对象或None是完全正常的,并解释每一个对象的含义。就docstring而言,如果您声明一个应该是str的参数也可能需要None,那么每个人都会理解您的意思
在处理提供静态可检查类型用法的PEP-484中,这种使用None的概念不仅是可以接受的,而且是为了满足需要
如果str_arg_1应该始终是一个字符串,那么您可以将其提示为
def example_method(str_arg_1: str):
如果允许它也是None,那么您可以用一个联合类型指示它
def example_method(str_arg_1: Union[str, None]):
由于这是一个非常常见的情况,因此有一个快捷方式来表示:
def example_method(str_arg_1: Optional[str]):
实际上,如果默认值是None,那么使用这些类型注释的静态检查器将假定使用Optional,因此以下内容是等效的:
Optional
def example_method(str_arg_1: Optional[str] = None): def example_method(str_arg_1: str = None):
名字没有类型;只有它们引用的值才有类型。在这种情况下,记录
str_arg_1
将引用str
对象或None
是完全正常的,并解释每一个对象的含义。就docstring而言,如果您声明一个应该是str
的参数也可能需要None
,那么每个人都会理解您的意思在处理提供静态可检查类型用法的PEP-484中,这种使用
None
的概念不仅是可以接受的,而且是为了满足需要如果
str_arg_1
应该始终是一个字符串,那么您可以将其提示为如果允许它也是
None
,那么您可以用一个联合类型指示它由于这是一个非常常见的情况,因此有一个快捷方式来表示:
实际上,如果默认值是
None
,那么使用这些类型注释的静态检查器将假定使用Optional
,因此以下内容是等效的:相关问题 更多 >
编程相关推荐