中的函数注解-编译系统透视++图解编译原理_

时间:2024-06-29 19:45:44
【文件属性】:

文件名称:中的函数注解-编译系统透视++图解编译原理_

文件大小:9.16MB

文件格式:PDF

更新时间:2024-06-29 19:45:44

Python 学习手册 中文 高清文字版

Python 3.0中的函数注解 在Python 3.0中(但不包括Python 2.6),也可以给函数对象附加注解信息——与函数的 参数和结果相关的任意的用户定义的数据。Python为声明注解提供了特殊的语法,但是,它 自身不做任何事情;注解完全是可选的,并且,出现的时候只是直接附加到函数对象的 __annotations__属性以供其他用户使用。 我们在上一章中介绍了Python 3.0的keyword-only参数,注解则进一步使函数头部语法 通用化。考虑如下的不带注解的函数,它编写为带有3个参数并且返回一个结果: >>> def func(a, b, c): ... return a + b + c ... >>> func(1, 2, 3) 6 从语法上讲,函数注解编写在def头部行,就像与参数和返回值相关的任意表达式一 样。对于参数,它们出现在紧随参数名之后的冒号之后;对于返回值,它们编写于紧跟在参 数列表之后的一个->之后。例如,这段代码,注解了前面函数的3个参数及其返回值: >>> def func(a: 'spam', b: (1, 10), c: float) -> int: ... return a + b + c ... >>> func(1, 2, 3) 6 调用一个注解过的函数,像以前一样,不过,当注解出现的时候,Python将它们收集到 字典中并且将它们附加给函数对象自身。参数名变成键,如果编写了返回值注解的话,它存 储在键"return"下,而注解键的值则赋给了注解表达式的结果: >>> func.__annotations__ {'a': 'spam', 'c': , 'b': (1, 10), 'return': } 由于注解只是附加到一个Python对象的Python对象,注解可以直接处理。下面的例子只 是注解了3个参数中的两个,并且通用地遍历附加的注解: >>> def func(a: 'spam', b, c: 99): ... return a + b + c ... >>> func(1, 2, 3) 6 >>> func.__annotations__ {'a': 'spam', 'c': 99} >>> for arg in func.__annotations__: ... print(arg, '=>', func.__annotations__[arg]) ... a => spam c => 99 这里有两点值得注意。首先,如果编写了注解的话,仍然可以对参数使用默认值——注 解(及其:字符)出现在默认值(及其=字符)之前。例如,下面的a:'spam'=4意味着参数a的默认 值是4,并且用字符串'spam'注解它: >>> def func(a: 'spam' = 4, b: (1, 10) = 5, c: float = 6) -> int:


网友评论