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

本文共 2195 字,大约阅读时间需要 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'])  # <class 'int'>

我们可以看到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'])   # <class 'float'>

我们可以看到此时我们给予函数中的三个参数对用的注释,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/

你可能感兴趣的文章
ButterKnife使用问题
查看>>
React学习笔记(一)
查看>>
低代码后续发展路线图
查看>>
MobX 学习 - 04 TodoList 案例
查看>>
MobX 学习 - 06 异步任务、rootStore、数据监测
查看>>
FPGA学习网站推荐
查看>>
oracle 翻译ip归属地/经纬度/定位;获取ip归属地/经纬度/定位;获取ip gps定位/lng,lat/坐标
查看>>
LeetCode:100. Same Tree相同的树(C语言)
查看>>
【个人网站搭建】GitHub pages+hexo框架下为next主题添加分类及标签
查看>>
GDB命令—jump/return/call/disassemble
查看>>
java基础--继承
查看>>
fastjson 反序列化源码解析
查看>>
按位与、或、非、异或总结
查看>>
TCP心跳检测包
查看>>
01 背包问题
查看>>
JVM - 参数配置影响线程数
查看>>
在 springboot 项目中全局处理异常
查看>>
ILI9341几个重要的命令
查看>>
AD如何对原理图进行注释
查看>>
NC15136: 迷宫
查看>>