一、代码块
Python程序是由代码块构造的。块是一个python程序的文本,他是作为一个单元执行的。
代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。
而作为交互方式输入的每个命令都是一个代码块。
什么叫交互方式?就是咱们在cmd中进入Python解释器里面,每一行代码都是一个代码块。
不同的代码块:
def func(): print(333) class A: name = ‘alex‘
虽然上面的缩进的内容都叫代码块,但是他不是python中严格定义的代码块。
for i in ‘12324545‘: print(i)
交互模式下,每一行都是一个代码块>>>i1 = 100 可以理解这一行在一个文件中>>>i2 = 100 可以理解这一行在另一个文件中
# 二、 id, is ==
name = ‘alex‘ #赋值
print(‘alex‘ == ‘alex‘) #数值相同
name = ‘alex123‘
print(id(name)) #2112772900544
# 在内存中id都是唯一的,如果两个变量指向的值的id相同,就证明他们在内存中是同一个。
# is判断的是两个变量的id值是否相同。
# 如果is是True, == 一定是True。
# 三、小数据池(缓存机制,驻留机制)
小数据池的应用数据类型:整数,字符串,bool值
# 小数据池,python对内存做的一个优化:
# 他将 -5~256 之间的整数,以及一定规则的字符串,提前在内存中创建了池,容器。容器里固定的放了这些数。
指向的都是同一个内存地址
在交互器中
s1 = 100
s2 = 100
指向地址一致
与
s1 = 1000
s2 = 1000
指向地址不一致
为什么这么做:
1. 节省内存。
2. 提高性能与效率
代码块:
python在对于同一个代码块中的变量,初始化对象的命令中时,它会将变量与值的对应关系放到一个字典中
如果下面的代码在遇到初始化对象的命令时,它会先从字典中寻找,如果存在相同的值,他会复用,所以指向的都是同一个内存地址。
dic = {‘name‘:[email protected]的内存地址}
python交互方式对于不同的代码块:初始化命令时,他会从小数据池中寻找。
name = ‘[email protected]‘
name1 = ‘[email protected]‘
1 #内存地址会变 2 3 # 小数据池 指向同一地址 4 i1 = 100 5 i2 = 100 6 print(id(i1),id(i2)) 7 # pycharm 140708817920128 140708817920128 8 # 交互方式 140708990083200 140708990083200 9 10 11 # 同一代码块。pycharm指向的是同一地址,交互方式指向的不同地址。 12 i1 = 1000 13 i2 = 1000 14 print(id(i1),id(i2)) 15 #pycharm 2093897078224 2093897078224 16 #交互方式 1830950750224 1830950750096 17 18 19 # 不同代码块,地址不同 20 def func1(): 21 i = 1000 22 print(id(i)) # 2093927219472 23 24 def func2(): 25 i = 1000 26 print(id(i)) # 2093927219440 27 28 func1() 29 func2() 30 31 32 # 从小数据取得 地址相同 33 def func1(): 34 i = 100 35 print(id(i)) # 140708817920128 36 37 def func2(): 38 i = 100 39 print(id(i)) # 140708817920128 40 41 func1() 42 func2()
小数据池 代码块详解
原文地址:https://www.cnblogs.com/eaoo/p/9449105.html