python系列教程77
Posted 人工智能AI技术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python系列教程77相关的知识,希望对你有一定的参考价值。
朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow
声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!
为了使运行速度更快,有时候Python并不会立即执行回收,而是会缓存并复用小的整数和小的字符串:
>>> x = 42
>>> x = 'shrubbery' # Reclaim 42 now?
这里的对象42并不会被立即回收;相反地,它将可能仍被保存在一个系统表中,等待下一次你的代码生成另一个42来重复利用。
在Python程序中有两种不同的方法去检查是否相等:
>>> L = [1,2,3]
>>> M = L # M and L reference the same object
>>> L == M # Same value
True
>>> L is M # Same object
True
这里的第一种技术“==操作符”,测试两个被引用的对象是否有相同的值。第二种方法“is操作符”,它检查对象的同一性,即两个变量名精确地指向同一个对象,它才会返回True;如果只是引用值相等,但是是不同的对象,它的返回值将是False:
>>> L = [1,2,3]
>>> M = [1,2,3] # M and L reference different objects
>>> L == M # Same values
True
>>> L is M # Different objects
False
但是当我们对小的数字采用同样的操作时却会有不同的结果:
>>> X = 42
>>> Y = 42 # Should be two different objects
>>> X == Y
True
>>> X is Y # Same object anyhow: caching at work!
True
X和Y应该是==的(具有相同的值),但不是is的(同一个对象)。但是,因为小的整数和字符串被缓存并复用了,所以is告诉我们X和Y是引用了一个相同的对象。
你还能够向Python查询对一个对象引用的次数:在sys模块中的getrefcount函数会返回对象的引用次数。例如,在IDLE GUI中查询整数对象1时,它会报告这个对象有837次重复引用(绝大多数都是IDLE系统代码所引用的):
>>> import sys
>>> sys.getrefcount(1) # 837 pointers to this shared piece of memory
837
因为我们不能改变数字和字符串,所以无论对同一个对象有多少个引用都没有关系。所以Python为了执行速度而缓存并复用小的整数和小的字符串。这一招真的很绝!!!
以上是关于python系列教程77的主要内容,如果未能解决你的问题,请参考以下文章
Azure 机器人微软Azure Bot 编辑器系列 : 机器人/用户提问回答模式,机器人从API获取响应并组织答案 (The Bot Framework Composer tutorial(代码片段