博客
关于我
python 中的注释(annotations)
阅读量:319 次
发布时间:2019-03-04

本文共 2171 字,大约阅读时间需要 7 分钟。

在读代码的时候,我们有时候会遇到别人的代码中定义函数时有以下的写法:

NB(注意): # 后面的部分表示输出结果。
第一种类型注释:函数定义中的注释

class Debug:    def calculateSum(self, size: int) -> int:        return sum(range(size))if __name__ == "__main__":    main = Debug()    result = main.calculateSum(10)    print(result)                   # 45

我们可以看到这里的参数size后面有一个冒号,并且紧跟着整型int标识符,在括号外还有一个->箭头

并且也跟着一个整型标识符int,这究竟是什么意思呢?其实这是一种特殊的注释方式,为了让我们在使用装饰器等其他函数的时候事半功倍。箭头后面的int标识符告诉使用者,这个函数的返回值应当是一个整型的,size后面的标识符告诉使用者这个函数的输入参数应该是整型的。并且对于->后面的标识符我们可以使用.__annotations__['return']的方法进行获取,代码如下:

def f(x) -> int:    return int(x)if __name__ == "__main__":     print(f.__annotations__['return'])  # 

我们可以看到f.__annotations__['return']输出的结果<class 'int'>,返回的正是我们的注释类型,此处的f为所定义函数的名称。

我们再看一个例子:

def calculateSum(x:'annotating x', y: 'annotating y', z: int) -> float: print(x + y + z)if __name__ == "__main__":     calculateSum(5,6,7)                             # 18    print(calculateSum.__annotations__['return'])   # 

我们可以看到此时我们给予函数中的三个参数对用的注释,x,y均为字符串类型的注释,z为整数类型的注释,最终当我们给予x,y,z均为整数类型的数据时,获取了最后的结果18,由此我们可以看到,对于annotation,实际上是不影响真实的计算结果的,只是一种提示性的作用,因此要避免乱用。

print(calculateSum.__annotations__['return'])的结果也得到了正确的返回值的注释类型。
实际上上述函数定义的代码也等同于,

def calculateSum(x:'annotating x', y: 'annotating y', z: int) -> float: 	print(x + y + z)

这种写法可能更符合我们的通用写法。

第二种注释:行间注释

代码如下:

class Debug:    def __init__(self):        self.x1 = 5        self.x2 = 10                    def calculateSum(self):        # print out the sum of these two numbers        print(self.x1 + self.x2)if __name__ == "__main__":    main = Debug()    main.calculateSum()

如上述代码所示,#后面的部分就是我们在python中经常会用到的注释方法,也叫行间注释。如这里的print out the sum of these two numbers,这种注释不会通过外部命令被显示,只是用来告知或者提示阅读该代码的人下一行或者下一段代码所要实现的功能。

第三种注释:位于函数名称或者类名后面的注释

代码如下:

class Debug:    """    This is a class for debugging    """    def __init__(self):    	"""    	This funtion only has one property		"""        self.x = 5        main = Debug()

如上述代码所示,这种类型的注释通常使用三个双引号将注释内容括起来,如:"""注释内容""",这里的This is a class for debugging就是我们对这个类对象的注释,This funtion only has one property就是我们对这个初始化__init__(self)的注释。这种形式的注释是为了给用户在调用函数或者类的时候给与足够的信息提示。那如何查看这些注释呢,请看。因此不是特殊情况不要乱用这种注释方式,一般的注释推荐使用行间注释的形式。

如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

转载地址:http://vtuh.baihongyu.com/

你可能感兴趣的文章
web项目配置
查看>>
基于单片机可控音乐流水灯控制设计-全套资料
查看>>
基于单片机简易信号误差分析设计-全套资料
查看>>
基于单片机简易脉搏测量仪系统设计-毕设课设资料
查看>>
Javascript中String支持使用正则表达式的四种方法
查看>>
【Tool】如何使用 Uniflash 烧写 WIFI 芯片 CC3200
查看>>
纯客户端页面关键字搜索高亮jQuery插件
查看>>
Java温故而知新-反射机制
查看>>
eclipse引用sun.misc开头的类
查看>>
Servlet2.5的增删改查功能分析与实现------删除功能(四)
查看>>
Session验证码的实现(2018-7-3)
查看>>
spring启动错误:Could not resolve placeholder
查看>>
选择性估算器绕过行安全策略漏洞
查看>>
对PostgreSQL数据库结构的宏观理解
查看>>
查询某表格上次进行vacuum的时间
查看>>
invalid byte sequence for encoding
查看>>
聊一聊那些应该了解的大佬(飞控,人工智能方向)
查看>>
redis向数组中添加值并查看数组长度
查看>>
JS编写一个函数,计算三个不同数字的大小,按从小到大顺序打印(穷举法)
查看>>
sqlplus的基本使用
查看>>