代码块可以使得一段python代码作为一个单元、一个整体执行。
1.模块文件是一个代码块 2.函数体是一个代码块 3.class的定义是一个代码块 4.交互式(python idle)的每一个命令行都是一个独立的代码块 5.脚本文件是一个代码块 6.脚本命令是一个代码块(python -c “xxx”) 7.eval()和exec()中的内容也都有各自的代码块
内存地址:内存地址是一个唯一的代表某个存有数据的内存单元的数值编码。简单的说就是,在创建一个对象时,计算机会在内存开辟一个空间,将对象数据临时加到这个空间中,这个空间是有一个唯一的标识,这个空间就是创建对象的内存,这个标识就是内存地址,如果要访问内存地址,使用id(对象)的方法去获取。
a = 10 print(id(a))#140723198124976运行结果是False,说明a和b的内存地址是不相等的,a和b分别指向内存中的不同内存地址 注意:只有在dos窗口下,以上实例运行结果为False,用pycharm时,运行结果是True,因为交互方式输入的每个命令都是一个代码块,在dos窗口下,a=10和b=10是两个代码块,而在pycharm下它们是一个代码块(详见下文2、代码块的缓存机制)。
运行结果是True,说明a和b的值是相等的
简单的说就是:执行同一个代码块时,遇到初始化对象的命令时,系统会将初始化的值与以前初始化对象存储在内存中的值进行比较,如果有同样的记录,那么它会重复使用内存中之前的那个值,如果没有同样的记录,则开辟新的内存空间,储存这个值。
所以在pycharm中执行以上实例的时候,会把a、b两个变量指向同一个对象,满足缓存机制则他们在内存中只存在一个,即:id相同。
a = 10 b = 10 print(a is b)#True注意:几乎所有的字符串都会符合缓存机制,并不是全部
小数据池,也称为小整数缓存机制,或者称为驻留机制等
简单的说就是:执行不同的代码块时,遇到初始化对象的命令时,系统会将初始化的值与缓存中预留的整数和字符串进行比较,如果有同样的字符串和数值,那么它会直接使用缓存中预留的那个值,如果没有同样的,则开辟新的内存空间,储存这个值。
1.我们所有的代码都需要依赖代码块执行 2.交互式命令下(dos窗口),一行就是一个代码块
1.同一个代码块下,有一个机制:缓存机制 范围: 所有的数字,bool,几乎所有的字符串 2.不同代码块下,遵循另一个机制:驻留机制 范围:-5至256的数字,bool,满足规则的字符串