7.3 给函数å�‚æ•°å¢žåŠ å…ƒä¿¡æ�¯Â¶
问题¶
ä½ å†™å¥½äº†ä¸€ä¸ªå‡½æ•°ï¼Œç„¶å�Žæƒ³ä¸ºè¿™ä¸ªå‡½æ•°çš„å�‚æ•°å¢žåŠ ä¸€äº›é¢�外的信æ�¯ï¼Œè¿™æ ·çš„è¯�其他使用者就能清楚的知é�“这个函数应该怎么使用。
解决方案¶
使用函数å�‚数注解是一个很好的办法,它能æ��示程åº�å‘˜åº”è¯¥æ€Žæ ·æ£ç¡®ä½¿ç”¨è¿™ä¸ªå‡½æ•°ã€‚ 例如,下é�¢æœ‰ä¸€ä¸ªè¢«æ³¨è§£äº†çš„函数:
def add(x:int, y:int) -> int:
return x + y
python解释器ä¸�ä¼šå¯¹è¿™äº›æ³¨è§£æ·»åŠ ä»»ä½•çš„è¯ä¹‰ã€‚它们ä¸�会被类型检查,è¿�è¡Œæ—¶è·Ÿæ²¡æœ‰åŠ æ³¨è§£ä¹‹å‰�的效果也没有任何差è·�。 然而,对于那些阅读æº�ç �的人æ�¥è®²å°±å¾ˆæœ‰å¸®åŠ©å•¦ã€‚ç¬¬ä¸‰æ–¹å·¥å…·å’Œæ¡†æž¶å�¯èƒ½ä¼šå¯¹è¿™äº›æ³¨è§£æ·»åŠ è¯ä¹‰ã€‚å�Œæ—¶å®ƒä»¬ä¹Ÿä¼šå‡ºçŽ°åœ¨æ–‡æ¡£ä¸ã€‚
>>> help(add)
Help on function add in module __main__:
add(x: int, y: int) -> int
>>>
å°½ç®¡ä½ å�¯ä»¥ä½¿ç”¨ä»»æ„�ç±»åž‹çš„å¯¹è±¡ç»™å‡½æ•°æ·»åŠ æ³¨è§£(例如数å—,å—符串,对象实例ç‰ç‰),ä¸�过通常æ�¥è®²ä½¿ç”¨ç±»æˆ–者å—符串会比较好点。
讨论¶
函数注解å�ªå˜å‚¨åœ¨å‡½æ•°çš„ __annotations__ 属性ä¸ã€‚例如:
>>> add.__annotations__
{'y': <class 'int'>, 'return': <class 'int'>, 'x': <class 'int'>}
尽管注解的使用方法å�¯èƒ½æœ‰å¾ˆå¤šç§�,但是它们的主è¦�用途还是文档。 å› ä¸ºpython并没有类型声明,通常æ�¥è®²ä»…仅通过阅读æº�ç �很难知é�“åº”è¯¥ä¼ é€’ä»€ä¹ˆæ ·çš„å�‚数给这个函数。 这时候使用注解就能给程åº�员更多的æ��示,让他们å�¯ä»¥æ£ç¡®çš„使用函数。
å�‚考9.20å°�èŠ‚çš„ä¸€ä¸ªæ›´åŠ é«˜çº§çš„ä¾‹å�,演示了如何利用注解æ�¥å®žçŽ°å¤šåˆ†æ´¾(比如é‡�载函数)。