什么->在 Python 函数定义中是什么意思?

What does -gt; mean in Python function definitions?(什么-gt;在 Python 函数定义中是什么意思?)
本文介绍了什么->在 Python 函数定义中是什么意思?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我最近在查看 Python 3.3 语法规范时发现了一些有趣的东西:

I've recently noticed something interesting when looking at Python 3.3 grammar specification:

funcdef: 'def' NAME parameters ['->' test] ':' suite

Python 2 中没有可选的箭头"块,我在 Python 3 中找不到任何有关其含义的信息.事实证明这是正确的 Python,并且被解释器接受:

The optional 'arrow' block was absent in Python 2 and I couldn't find any information regarding its meaning in Python 3. It turns out this is correct Python and it's accepted by the interpreter:

def f(x) -> 123:
    return x

我认为这可能是某种前置条件语法,但是:

I thought that this might be some kind of a precondition syntax, but:

  • 我无法在此处测试 x,因为它仍然未定义,
  • 无论我在箭头后面放什么(例如2 < 1),它都不会影响函数的行为.
  • I cannot test x here, as it is still undefined,
  • No matter what I put after the arrow (e.g. 2 < 1), it doesn't affect the function behavior.

熟悉这种语法风格的人能解释一下吗?

Could anyone familiar with this syntax style explain it?

推荐答案

这是一个函数注释.

更详细地说,Python 2.x 有文档字符串,允许您将元数据字符串附加到各种类型的对象.这非常方便,因此 Python 3 通过允许您将元数据附加到描述其参数和返回值的函数来扩展该功能.

In more detail, Python 2.x has docstrings, which allow you to attach a metadata string to various types of object. This is amazingly handy, so Python 3 extends the feature by allowing you to attach metadata to functions describing their parameters and return values.

没有先入为主的用例,但 PEP 建议了几个.一种非常方便的方法是允许您使用预期类型注释参数;然后很容易编写一个装饰器来验证注释或将参数强制为正确的类型.另一个是允许特定参数的文档,而不是将其编码到文档字符串中.

There's no preconceived use case, but the PEP suggests several. One very handy one is to allow you to annotate parameters with their expected types; it would then be easy to write a decorator that verifies the annotations or coerces the arguments to the right type. Another is to allow parameter-specific documentation instead of encoding it into the docstring.

这篇关于什么-&gt;在 Python 函数定义中是什么意思?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

How do I make a list of all members in a discord server using discord.py?(如何使用 discord.py 列出不和谐服务器中的所有成员?)
how to change discord.py bot activity(如何更改 discord.py 机器人活动)
Issues with getting VoiceChannel.members and Guild.members to return a full list(让 VoiceChannel.members 和 Guild.members 返回完整列表的问题)
Add button components to a message (discord.py)(将按钮组件添加到消息(discord.py))
on_message() and @bot.command issue(on_message() 和@bot.command 问题)
How to edit a message in discord.py(如何在 discord.py 中编辑消息)