python小数据池、代码块

一、代码块

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

时间: 2024-10-04 16:27:13

python小数据池、代码块的相关文章

Python 小数据池、代码块以及代码块缓存机制

按照惯例,吟诗一首:苏轼<江城子·乙卯正月二十日夜记梦> 十年生死两茫茫,不思量,自难忘.千里孤坟,无处话凄凉. 纵使相逢应不识,尘满面,鬓如霜. 夜来幽梦忽还乡,小轩窗,正梳妆.相顾无言,惟有泪千行. 料得年年肠断处,明月夜,短松冈. 1. is 和 == 之间的区别 在讲解代码块及其缓存机制之前有必要搞清楚is和==之间的区别 开门见山直接说:==是比较两边变量的值是否相同,is是比较两边变量的内存地址是否相同,在python中内存地址如何获取,当然是使用id(item)函数获取了 举两个

python 小数据池、代码块详解

首先我们来看看下面的问题,第一次遇到还以为见鬼了.                    看到上面这么多种情况刚开始直接就懵逼了.100ID一样,1000就不一样.终端运行情况居然会和pycharm不一样. 后面终于搞懂了,原来这里头有大学问,且看下面分析. 一.代码块 Python程序是由代码块构造的.块是一个python程序的文本,他是作为一个单元执行的. 代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而作为交互方式输入的每个命令都是一个代码块. 也就是说:       所

Python小数据池,代码块解析

一.id,is,== 在Python中,id是什么?id是内存地址,比如你利用id()内置函数查询一个数据的内存地址: name = '太白' print(id(name)) # 1585831283968 那么is又是什么?==又是什么? == 是比较两边的数值是否相等,而is是比较两边的内存地址是否相等.如果内存地址相等,那么这两边其实是指向同一个内存地址. 可以说如果内存地址相同,那么值肯定相同,但是如果值相同,内存地址不一定相同. 二.代码块 根据官网提示我们可以获知: 根据提示我们从官

python小数据池,代码块深入剖析

小数据池 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建更多的对象 缓存:int,str,bool int:缓存范围-5~256 str:    1.长度小于等于1,直接缓存 2.长度大于1.字符串中如果只有数字,字母,下划线,就会缓存 3.乘于1.同上,乘于大于1的数.仅包含数字,字母,下划线,最终长度小于20会缓存 4.使用sys模块中的intern()缓存字符串 代码块的关系:如果在同一个代码块中,默认的整数和字符串还有布尔值都会进行缓存,如果涉及计算,尊崇上面的规则, 如果跨

五.python小数据池,代码块的最详细、深入剖析

一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存中,那么这个空间是有一个唯一标识的,就好比是身份证号,标识这个空间的叫做内存地址,也就是这个数据(对象)的id,那么你可以利用id()去获取这个数据的内存地址: name = '太白' print(id(name)) # 1585831283968 那么 is 是什么? == 又是什么? == 是比较的两边的数值是否

python小数据池,代码块的最详细、深入剖析

一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存中,那么这个空间是有一个唯一标识的,就好比是身份证号,标识这个空间的叫做内存地址,也就是这个数据(对象)的id,那么你可以利用id()去获取这个数据的内存地址: name = '太白' print(id(name)) # 1585831283968 那么 is 是什么? == 又是什么? == 是比较的两边的数值是否

小学生都能学会的python(小数据池)

1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 str: 1. 长度小于等于1,直接缓存 2. 长度大于1. 字符串中如果只有数字, 字母, 下划线. 就会缓存 3. 乘以1. 同上, 乘以大于1的数.仅包含数字,字母下划线.最终长度小于20会缓存 4. 使用sys模块中的intern()缓存字符串 代码块的关系:如果在同一个代码块中.默认的整数和字符串还有布尔值都会进行缓存. 如果涉

Python小数据池(转)

一. id is == 二. 代码块 三. 小数据池 四. 总结 一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存中,那么这个空间是有一个唯一标识的,就好比是身份证号,标识这个空间的叫做内存地址,也就是这个数据(对象)的id,那么你可以利用id()去获取这个数据的内存地址: name = '太白' print(id(name)) # 1585831283968 那

Python小数据池和字典操作

小数据池 #id 查看内存地址 #多个代码块可以使用小数据池 #一个代码块中有一个问题,就是重复使用 #数字 -5~256 #字符串 字符串 乘法总数长度不能超过20, 0,1除外 #不能有特殊字符 字典 (python36 之后有顺序打印,python35及之前版本无序打印) 键 : 不可变(可哈希) (数字,字符串,元祖,布尔值) 可变(不可哈希) (列表,字典) 字典里的键必须保证唯一(不能重复) 值 : 没有要求 增 : dic['键'] = '值' print(dic) 如果这个键不在