注释或注释功能

时间:2019-10-17 03:06:04

标签: python

æ ¹æ®PEP 526 -- Syntax for Variable Annotations,您å¯ä»¥æ·»åŠ æ³¨é‡Šä»¥æ³¨é‡Šå¦‚下函数:

def comment():
    num: int = 5
    print ('COMMENTS', __annotations__)

那为什么ä¸èµ·ä½œç”¨ï¼Ÿ

>>> comment()
COMMENTS {}

3 个答案:

答案 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:

  

注释局部å˜é‡å°†ä½¿è§£é‡Šå™¨å°†å…¶è§†ä¸ºå±€éƒ¨å˜é‡ï¼Œå³ä½¿ä»Žæœªåˆ†é…过。ä¸ä¼šè¯„估局部å˜é‡çš„注释。

和

  

请注æ„,如果ä¸æ˜¯é™æ€æ‰¾åˆ°æ³¨é‡Šï¼Œåˆ™æ ¹æœ¬ä¸ä¼šåˆ›å»ºæ³¨é‡Šå­—典。åŒæ ·ï¼Œå…·æœ‰æœ¬åœ°å¯ç”¨æ³¨é‡Šçš„价值并ä¸èƒ½æŠµæ¶ˆå¿…须在æ¯ä¸ªå‡½æ•°è°ƒç”¨ä¸Šåˆ›å»ºå’Œå¡«å……注释字典的æˆæœ¬ã€‚因此,ä¸ä¼šè¯„估和存储功能级别的注释。

相关问题