Python 注释或注释函数
根据,您可以对函数进行注释,如下所示:Python 注释或注释函数,python,Python,根据,您可以对函数进行注释,如下所示: def comment(): num: int = 5 print ('COMMENTS', __annotations__) 那为什么这行不通呢 >>> comment() COMMENTS {} 你应该阅读(我的重点)的全文: 请注意,如果没有静态地找到注释,则根本不会创建\uuuuuuuuuuuuuuuuuuuuuuuuuuu注释字典。此外,注释在本地可用的价值并不能抵消每次函数调用时创建和填充注释字典的成本因此
def comment():
num: int = 5
print ('COMMENTS', __annotations__)
那为什么这行不通呢
>>> comment()
COMMENTS {}
你应该阅读(我的重点)的全文: 请注意,如果没有静态地找到注释,则根本不会创建
\uuuuuuuuuuuuuuuuuuuuuuuuuuu注释
字典。此外,注释在本地可用的价值并不能抵消每次函数调用时创建和填充注释字典的成本因此,不会计算和存储功能级别的注释。
如果阅读链接的政治公众人物,您将发现以下文本: 注释局部变量将导致解释器将其视为局部变量,即使它从未被赋值将不计算局部变量的注释:
def f():
x: NonexistentName # No error.
但是,如果处于模块或类级别,则将对类型进行评估:
x: NonexistentName # Error!
class X:
var: NonexistentName # Error!
此外,在模块或类级别,如果要注释的项是一个简单的名称,则它和注释将作为从名称到已评估注释的有序映射存储在该模块或类的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。以下是一个例子:
from typing import Dict
class Player:
...
players: Dict[str, Player]
__points: int
print(__annotations__)
# prints: {'players': typing.Dict[str, __main__.Player],
# '_Player__points': <class 'int'>}
从键入import Dict开始
职业球员:
...
玩家:Dict[str,Player]
__点数:int
打印(注释)
#打印:{'players':键入.Dict[str,\uuuuuu main\uuuuuuu.Player],
#“_Player__points”:
局部变量注释不会被计算,也不会存储在\uuuuuuuuuuuuuuuuuuuuuu
dict中。事实上,局部变量根本就没有\uuuuuuuuuuuuuuuuuuu
dict;您正在打印模块全局的注释。来自:
注释局部变量将导致解释器将其视为局部变量,即使它从未被赋值。将不计算局部变量的注释
及
请注意,如果未静态找到注释,则根本不会创建注释字典。此外,注释在本地可用的价值并不能抵消每次函数调用时创建和填充注释字典的成本。因此,不会计算和存储函数级别的注释
这些不是注释。很酷,因此为了在函数范围内获得注释,需要将其放入函数本身的参数中?@Kyle:仅仅为了更改注释行为而更改函数的参数是没有意义的。