Python with 工作原理、装饰器、回收机制、内存管理机制、拷贝、作用域等(13)


分代回收的核心思想是∶在历经多次扫描的情况下 , 都没有被回收的变量 , gc机制就会认为 , 该变量是常用变量 , gc对其扫描的频率会降低
内存池机制
中有分为大内存和小内存:(256K为界限分大小内存)
1、大内存使用进行分配
2、小内存使用内存池进行分配
学习之 a == b 和 a is b 的区别
为了优化效率 , 内置了小整数对象池和简单字符串对象池 。
小整数对象池包括[-5, 256] , 这之间的小整数数值相同时在小整数对象池中属于同一对象 。即是 a is b 返回True 。简单字符串也是如此 , 对于其他对象则不适用 。但是在编译器中可能会有所不同 。
字符串(字符串驻留)
当两人对象字符串相同时 , 它们使用的是内一个内存 , 但是有一个规则 , 那就是只允许由数字 , 字母 , 下划线组成才能字符串驻留 。
字符串驻留其实就是等价于小整数 。不同环境中 , 字符串驻留也不同 , 在中 , 字符串就不区分 , 都属于驻留 。
引用类型:如 list、tuple、dict等
在中 , 引用类型在创建对象是 , 都会开辟一个存储空间 , 不管元素是不是相同 。它不像非引用类型一样 , 相同元素都是指向同一内存地址 。
11、格式化输出介绍
在中 , print() 函数支持格式化输出 , 与 C 语言的类似 。
相关博客推荐:格式化输出介绍
格式化输出示例:
str1 = "%s.length = %d" % ("AmoXiang", len("AmoXiang"))
% 在字符串中表示格式化操作符 , 它后面必须附加一个格式化符号 , 具体说明如下表所示
%()元组可以包含一个或多个值 , 如变量或表达式 , 用来向字符串中%操作符传递值 , 元组包含元素数量、顺序都必须与字符串中%操作符相互对应 , 否则将抛出异常 。
%()元组必须位于字符串的后面 , 否则无效 。如果字符串中只包含一个%操作符 , 那么也可以直接传递值 。
格式化输出相关符号与描述
格式化输出浮点数:把数字输出为不同格式的浮点数字符串 。
PI = 3.141592653print("pi1 = .3f" % PI)# 总宽度为10 , 小数位精度为3print("pi2 = %.*f" % (3, PI))# *表示从后面的元组中读取3 , 定义精度print("pi3 = 0.3f" % PI)# 用0填充空白print("pi4 = %-10.3f" % PI)# 左对齐 , 总宽度10个字符 , 小数位精度为3print("pi5 = %+f" % PI)# 在浮点数前面显示正号
使用 str.() 方法
% 操作符是传统格式化输出的基本方法 , 从2.6 版本开始 , 为字符串数据新增了一种格式化方法 str.() , 它通过 {} 操作符和 : 辅助指令来代替 % 操作符 。
通过位置索引值
print('{0} {1}'.format('Python', 3.7))# Python 3.7print('{} {}'.format('Python', 3.7))# Python 3.7print('{1} {0} {1}'.format('Python', 3.7))# 3.7 Python 3.7
在字符串中可以使用 {} 作为格式化操作符 。与 % 操作符不同的是 , {} 操作符可以通过包含的位置值自定义引用值的位置 , 也可以重复引用 。
通过关键字索引值
# 输出:Amo年龄是18岁 。print('{name}年龄是{age}岁 。'.format(age=18, name="Amo"))