æ ¹æ®PEP 526 -- Syntax for Variable Annotations,您å¯ä»¥æ·»åŠ 注释以注释如下函数:
def comment():
num: int = 5
print ('COMMENTS', __annotations__)
那为什么ä¸èµ·ä½œç”¨ï¼Ÿ
>>> comment()
COMMENTS {}
ç”案 0 :(得分:4)
如果您阅读链接的PEP,则会å‘现以下文本:
 Â注释局部å˜é‡å°†ä½¿è§£é‡Šå™¨å°†å…¶è§†ä¸ºå±€éƒ¨å˜é‡ï¼Œå³ä½¿ä»Žæœªåˆ†é…过。 ä¸ä¼šè¯„估局部å˜é‡çš„注释:
   Âdef f(): x: NonexistentName # No error.
但是,如果它是在模å—或类级别,则将对类型进行求值:
   Âx: NonexistentName # Error! class X: var: NonexistentName # Error!
æ¤å¤–,在模å—或类级别,如果è¦æ³¨é‡Šçš„项目是简å•å称,则它将和注释å˜å‚¨åœ¨è¯¥æ¨¡å—çš„
__annotations__
属性ä¸ï¼Œæˆ–者类(如果为ç§æœ‰ï¼Œåˆ™è¢«ç ´å)作为从å称到评估的注释的有åºæ˜ 射。这是一个示例: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'>}
ä¸è¯„估局部å˜é‡æ³¨é‡Šï¼Œä¹Ÿä¸å°†å…¶å˜å‚¨åœ¨__annotations__
å—å…¸ä¸ã€‚å®žé™…ä¸Šï¼Œæ ¹æœ¬æ²¡æœ‰__annotations__
å—典用于局部å˜é‡ã€‚您æ£åœ¨ä¸ºæ¨¡å—全局å˜é‡æ‰“å°__annotations__
。
ç”案 1 :(得分:3)
您应该阅读PEP 526的全文(强调我的æ„æ€ï¼‰ï¼š
 Â请注æ„,如果ä¸æ˜¯é™æ€æ‰¾åˆ°æ³¨é‡Šï¼Œåˆ™æ ¹æœ¬ä¸ä¼šåˆ›å»º
__annotations__
å—典。åŒæ ·ï¼Œå…·æœ‰æœ¬åœ°å¯ç”¨æ³¨é‡Šçš„价值并ä¸èƒ½æŠµæ¶ˆå¿…须在æ¯ä¸ªå‡½æ•°è°ƒç”¨ä¸Šåˆ›å»ºå’Œå¡«å……注释å—典的æˆæœ¬ã€‚ å› æ¤ï¼Œä¸ä¼šè¯„ä¼°å’Œå˜å‚¨åŠŸèƒ½çº§åˆ«çš„注释。
ç”案 2 :(得分:-1)
æ¥è‡ªPEP 526 -- Syntax for Variable Annotations:
 Â注释局部å˜é‡å°†ä½¿è§£é‡Šå™¨å°†å…¶è§†ä¸ºå±€éƒ¨å˜é‡ï¼Œå³ä½¿ä»Žæœªåˆ†é…过。ä¸ä¼šè¯„估局部å˜é‡çš„注释。
和
 Â请注æ„,如果ä¸æ˜¯é™æ€æ‰¾åˆ°æ³¨é‡Šï¼Œåˆ™æ ¹æœ¬ä¸ä¼šåˆ›å»ºæ³¨é‡Šå—典。åŒæ ·ï¼Œå…·æœ‰æœ¬åœ°å¯ç”¨æ³¨é‡Šçš„价值并ä¸èƒ½æŠµæ¶ˆå¿…须在æ¯ä¸ªå‡½æ•°è°ƒç”¨ä¸Šåˆ›å»ºå’Œå¡«å……注释å—典的æˆæœ¬ã€‚å› æ¤ï¼Œä¸ä¼šè¯„ä¼°å’Œå˜å‚¨åŠŸèƒ½çº§åˆ«çš„注释。