当声明一个函数时,我们应该使用返回注解吗?
def generate_nine() -> int: return 9
或者我们可以简单地这样说:
def generate_nine(): return 9
7nbnzgx91#
是的,你应该写一个返回类型注解来写更简洁的代码。据说返回类型注解增强了代码的可读性。考虑一个例子例如:
def get_data(a): return a ** 2
这对任何人来说都不容易,什么是预期的返回类型。如果传入数据为float,则函数将返回float。如果函数接收到int的值,它将返回int .所以即使它不容易读。因此,为了更好地理解,建议在编写时同时编写参数类型和返回类型。请参见下面的示例:
float
int
def greeting(name: str) -> str: return 'Hello ' + name
在函数greeting中,参数名称的类型应为str,返回类型应为str。子类型可作为参数接受。如果编译器不需要字符串值,则会引发错误。与前一个代码相比,这段代码更加清晰易懂。所以总结一下,为了编写更清晰的代码,我们应该添加返回类型注解。请参见this文档以更好地理解
str
2w2cym1i2#
更详细地说,Python 2.x有docstrings,它允许你将元数据字符串附加到各种类型的对象上,这是非常方便的,所以Python 3扩展了这个特性,允许你将元数据附加到描述参数和返回值的函数上。这里没有预想中的用例,但是PEP建议了几个。一个非常方便的用例是允许您用参数的预期类型来注解参数;这样就可以很容易地编写一个装饰器来验证注解或将参数强制为正确的类型,另一个方法是允许特定于参数的文档,而不是将其编码到文档字符串中。DOCS
2条答案
按热度按时间7nbnzgx91#
是的,你应该写一个返回类型注解来写更简洁的代码。据说返回类型注解增强了代码的可读性。考虑一个例子
例如:
这对任何人来说都不容易,什么是预期的返回类型。
如果传入数据为
float
,则函数将返回float
。如果函数接收到
int
的值,它将返回int
.所以即使它不容易读。因此,为了更好地理解,建议在编写时同时编写参数类型和返回类型。请参见下面的示例:
在函数greeting中,参数名称的类型应为
str
,返回类型应为str
。子类型可作为参数接受。如果编译器不需要字符串值,则会引发错误。与前一个代码相比,这段代码更加清晰易懂。所以总结一下,为了编写更清晰的代码,我们应该添加返回类型注解。请参见this文档以更好地理解
2w2cym1i2#
更详细地说,Python 2.x有docstrings,它允许你将元数据字符串附加到各种类型的对象上,这是非常方便的,所以Python 3扩展了这个特性,允许你将元数据附加到描述参数和返回值的函数上。
这里没有预想中的用例,但是PEP建议了几个。一个非常方便的用例是允许您用参数的预期类型来注解参数;这样就可以很容易地编写一个装饰器来验证注解或将参数强制为正确的类型,另一个方法是允许特定于参数的文档,而不是将其编码到文档字符串中。
DOCS