我最近注意到了一些有趣的事情,当我看到Python 3.3 grammar specification时:
funcdef: 'def' NAME parameters ['->' test] ':' suite
Python 2中没有可选的“arrow”块,我在Python 3中找不到任何关于它的含义的信息原来这是正确的Python,解释器接受了它:
def f(x) -> 123:
return x
我认为这可能是某种先决条件语法,但是:
我不能在这里测试,因为它还没有定义,
不管我在箭头后面放什么(例如
x
),它都不会影响函数行为。熟悉这种语法的人能解释一下吗?
最佳答案
这是一个function annotation。
更详细地说,Python2.x有docstrings,它允许您将元数据字符串附加到各种类型的对象。这非常方便,因此Python 3通过允许您将元数据附加到描述其参数和返回值的函数来扩展该特性。
没有先入为主的用例,但是PEP建议了几个一个非常方便的方法是允许您使用参数的预期类型对其进行注释;然后编写一个decorator来验证注释或将参数强制为正确的类型就很容易了。另一种方法是允许特定于参数的文档,而不是将其编码为docstring。
关于python - ->在Python函数定义中是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54544094/