Python基础五


本文目录:


1.小整数对象池

2.intern机制

3. Garbage collection(GC垃圾回收)

4.内建属性

5.内建函数

6.functools

7.常用标准库,常用标准库

8.pep8 编码规范


1.小整数对象池


整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。
Python 对小整数的定义是 [-5, 257) 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,所有位于这个范围内的整数使用的都是同一个对象.
同理,单个字母也是这样的。


2.intern机制

一个字符串如果出现两次或更多,intern机制会使它不会再创建新对象占用内存,

而是靠引用计数去维护何时释放。

总结:

小整数[-5,257)共用对象,常驻内存
单个字符共用对象,常驻内存
单个单词,不可修改,默认开启intern机制,共用对象,引用计数为0,则销毁 

数值类型和字符串类型在 Python 中都是不可变的,这意味着你无法修改这个对象的值,每次对变量的修改,实际上是创建一个新的对象 


3. Garbage collection(GC垃圾回收)


python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略


导致引用计数+1的情况:
对象被创建,例如a=23
对象被引用,例如b=a
对象被作为参数,传入到一个函数中,例如func(a)
对象作为一个元素,存储在容器中,例如list1=[a,a]


导致引用计数-1的情况:
对象的别名被显式销毁,例如del a
对象的别名被赋予新的对象,例如a=24
一个对象离开它的作用域,例如f函数执行完毕时,func函数中的局部变量(全局变量不会)
对象所在的容器被销毁,或从容器中删除对象

引用计数机制的优点:

简单
实时性:一旦没有引用,内存就直接释放了。不用像其他机制等到特定时机。实时性还带来一个好处:处理回收内存的时间分摊到了平时。


引用计数机制的缺点:

维护引用计数消耗资源
循环引用

有三种情况会触发垃圾回收:
调用gc.collect(),
当gc模块的计数器达到阀值的时候。
程序退出的时候


常用函数:
1、gc.set_debug(flags) 设置gc的debug日志,一般设置为gc.DEBUG_LEAK
2、gc.collect([generation]) 显式进行垃圾回收,可以输入参数,0代表只检查第一代的对象,1代表检查一,二代的对象,2代表检查一,二,三代的对象,如果不传参数,执行一个full collection,也就是等于传2。 返回不可达(unreachable objects)对象的数目
3、gc.get_threshold() 获取的gc模块中自动执行垃圾回收的频率。
4、gc.set_threshold(threshold0[, threshold1[, threshold2]) 设置自动执行垃圾回收的频率。
5、gc.get_count() 获取当前自动执行垃圾回收的计数器,返回一个长度为3的列表


标记清除和分代回收暂略~


4.内建属性


#py2中无继承父类,称之经典类,py3中已默认继承object
class Person:
    pass


使用dir(类名)可以查看类属性

常用专有属性说明触发方式
__init__构造初始化函数创建实例后,赋值时使用,在__new__
__new__生成实例所需属性创建实例时
__class__实例所在的类实例.__class__
__str__实例字符串表示,可读性print(类实例),如没实现,使用repr结果
__repr__实例字符串表示,准确性类实例 回车 或者 print(repr(类实例))
__del__析构del删除实例
__dict__实例自定义属性vars(实例.__dict__)
__doc__类文档,子类不继承help(类或实例)
__getattribute__属性访问拦截器访问实例属性时
__bases__类的所有父类构成元素类名.__bases__

5.内建函数如:


range,map函数,filter函数,reduce函数,sorted函数

Build-in Function,启动python解释器,输入dir(__builtins__), 可以看到很多python解释器启动后默认加载的属性和函数,这些函数称之为内建函数, 这些函数因为在编程时使用较多,cpython解释器用c语言实现了这些函数,启动解释器 时默认加载。

用到时再help(function), 查看如何使用


6.functools


functools 是python2.5被引人的,一些工具函数放在此包里。

以下方法可以看出functools中的函数

import functools
dir(functools)


7.常用标准库,常用扩展库


常用标准库

标准库说明
builtins内建函数默认加载
os操作系统接口
sysPython自身的运行环境
functools常用的工具
json编码和解码 JSON 对象
logging记录日志,调试
multiprocessing多进程
threading多线程
copy拷贝
time时间
datetime日期和时间
calendar日历
hashlib加密算法
random生成随机数
re字符串正则匹配
socket标准的 BSD Sockets API
shutil文件和目录管理
glob基于文件通配符搜索

常用扩展库

扩展库说明
requests使用的是 urllib3,继承了urllib2的所有特性
urllib基于http的高层库
scrapy爬虫
beautifulsoup4HTML/XML的解析器
celery分布式任务调度模块
redis缓存
Pillow(PIL)图像处理
xlsxwriter仅写excle功能,支持xlsx
xlwt仅写excle功能,支持xls ,2013或更早版office
xlrd仅读excle功能
elasticsearch全文搜索引擎
pymysql数据库连接库
mongoengine/pymongomongodbpython接口
matplotlib画图
numpy/scipy科学计算
django/tornado/flaskweb框架
xmltodictxml 转 dict
SimpleHTTPServer简单地HTTP Server,不使用Web框架
gevent基于协程的Python网络库
fabric系统管理
pandas数据处理库
scikit-learn机器学习库


8.pep8 编码规范


Python的编码风格

https://www.python.org/dev/peps/pep-0008/

如:

每级缩进用4个空格。

空格或Tab?
  • 空格是首选的缩进方法。
  • Tab仅仅在已经使用tab缩进的代码中为了保持一致性而使用。
  • Python 3中不允许混合使用Tab和空格缩进。
  • Python 2的包含空格与Tab和空格缩进的应该全部转为空格缩进。
最大行宽
  • 限制所有行的最大行宽为79字符。
  • 文本长块,比如文档字符串或注释,行长度应限制为72个字符。
空行
  • 两行空行分割顶层函数和类的定义。
  • 类的方法定义用单个空行分割。
  • 额外的空行可以必要的时候用于分割不同的函数组,但是要尽量节约使用。
  • 额外的空行可以必要的时候在函数中用于分割不同的逻辑块,但是要尽量节约使用。
源文件编码
  • 在核心Python发布的代码应该总是使用UTF-8(ASCII在Python 2)。
  • Python 3(默认UTF-8)不应有编码声明。
等~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

久亮哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值