大家好,小编为大家解答python中代码块所属关系的语法的问题。很多人还不知道python中代码块所属关系,现在让我们一起来看看吧!
Source code download: 本文相关源码
一,什么是代码块
Python程序是由代码块构造的。块是一个python程序的文本,他是作为一个单元执行的Python如何画九朵花。
代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。
而作为交互方式输入的每个命令都是一个代码块。
什么叫交互方式?就是咱们在cmd中进入Python解释器里面,每一行代码都是一个代码块,例如:
而对于一个文件中的两个函数,也分别是两个不同的代码块:
二,id,is,==
在Python中,id是什么?id是内存地址,比如你利用id()内置函数去查询一个数据的内存地址:
name = 'Tom'
print(id(name))
#5117952
那么 is 是什么? == 又是什么?
== 是比较的两边的数值是否相等,而 is 是比较两边的内存地址是否相等。 如果内存地址相等,那么这两边其实是指向同一个内存地址。
可以说如果内存地址相同,那么值肯定相同,但是如果值相同,内存地址不一定相同。
三,小数据池
小数据池,也称为小整数缓存机制,或者称为驻留机制等等。
那么到底什么是小数据池?他有什么作用呢?
大前提:小数据池,只针对,整数,字符串,bool值。
官方对于整数,字符串的小数据池是这么说的:
对于整数,Python官方文档中这么说:
The current implementation keeps an array of integer objects for all
integers between -5 and 256, when you create an int in that range you
actually just get back a reference to the existing object. So it
should be possible to change the value of 1. I suspect the behaviour
of Python in this case is undefined.
对于字符串:
Incomputer science, string interning is a method of storing only
onecopy of each distinct string value, which must be immutable.
Interning strings makes some stringprocessing tasks more time- or
space-efficient at the cost of requiring moretime when the string is
created or interned. The distinct values are stored ina string intern
pool. –引自维基百科
翻译并汇总一下,表达的意思就是:
Python自动将-5~256的整数进行了缓存,当你将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。
python会将一定规则的字符串在字符串驻留池中创建一份,当你将这些字符串赋值给变量时,并不会重新创建对象, 而是使用在字符串驻留池中创建好的对象。
其实,无论是缓存还是字符串驻留池,都是python做的一个优化,就是将-5~256的整数,和一定规则的字符串,放在一个‘池’(容器,或者字典)中,无论程序中那些变量指向这些范围内的整数或者字符串,那么他直接在这个‘池’中引用,言外之意,就是内存中只创建一个。
优点:能够提高一些字符串,整数处理在时间和空间上的性能;需要值相同的字符串,整数的时候,直接从