- 博刊:今日物语:CP3——2020.08 二周目
- 时间:2020.08.12~2020.08.20
博刊:今日物语CP3——2020.08 二周目
2020.08.12
1. Python高阶语法
可迭代对象
- 可迭代对象类:
__iter__()
方法
- 可迭代对象类:
迭代器
- iter()函数与next()函数
__iter__()
方法与__next__()
方法
自定义迭代器类
斐波那契数列:迭代器版
生成器
创建:
yield
(列表推导式)
return 跳出生成器
send 传入参数
斐波那契数列:生成器版
2020.08.13
1. Python高阶语法
- 生成器案例
- 回文数
- 素数
- 协程创建
- yield
- greenlet
- gevent
- 协程实战
- 多协程文件下载器:urllib.request
- 多协程Web服务器
2020.08.14
1. Python高阶语法
函数闭包
- 返回值
- 参数传递
装饰器:
@func_outer
- 本质为闭包函数
- 含参数装饰器
- 返回值
装饰器工厂:外部变量
1
2
3
4
5
6
7
8# 装饰器内部判断
if isinstance(path, str): # 如果传递的参数是path的话
return decorator
else: # 如果传递的只是函数名
return decorator(path) # path 其实是函数名
# 装饰器调用
2020.08.15
1. Python高阶语法
多重装饰器:先近后远
类装饰器
__call__(self)
方法__init__(self, func)
通过init初始化传入被装饰的函数名;
通过call来执行被装饰的函数
return self.func()
1
2
3
4
5
6class Test():
pass
def login():
pass类方法和静态方法
@classmethod:操作类属性、私有属性
1
2
3
def func(cls):
pass@staticmethod:不需要传递类属性,也不需要传递实例属性
1
2
3
def func():
pass
2020.08.16
1. Python高阶语法
Property属性操作:将方法像属性一样调用
方法一:property装饰器
- @property:获取
- @func.setter:修改
- @func.deleter:删除
三者装饰的函数名要相同
方法二:property(get_name, set_name, del_name, ‘doc’)方法,类属性方式
四个参数,前三个对应property装饰器,第四个为描述信息
调用方式
obj.name
obj.name = value
del obj,name
2020.08.17
1. Python高阶语法
GIL锁的简介
CPython的限制,保证同一时间只有一个线程在执行
GIL锁释放
GIL锁解锁方法
多进程
更换解释器
使用C写子线程,用gcc编译后并将扩展库导入到Python中
1
2
3gcc test.c -shared -o libtest.so
# 加载C语言编写的库so文件
my_lib = ctypes.cdll.LoadLibrary('./libtest.so')
GIL锁面试
2020.08.18
1. Python高阶语法
Python导入Excel
- xlrd
- xlwt
- xlsxwriter
- openpyxl
高级语言分类
解释型语言
编译型语言
动态语言
静态语言
强类型语言
弱类型语言
2020.08.19
1. Python高阶语法
可变类型与不可变类型
可变与不可变,指的是内存中的值(value)是否可以被改变
浅拷贝
- 可变类型:拷贝父对象,产生新的内存空间,数据独立,子对象不产生新的空间,只是引用;
- 不可变类型:无论父对象还是子对象,都是引用,数据不独立。
深拷贝
- 可变类型:拷贝父对象、子对象,都产生新的内存空间,数据独立;
- 不可变类型:子对象如果是可变类型,拷贝并产生新的空间,数据独立,如果也是不可变,则是引用。
切片可变、字典拷贝:都是浅拷贝
2020.08.20
1. Python高阶语法
模块导入时的路径搜索顺序
- 当前路径
- 环境变量:PYTHONPATH下的路径
- Python的安装路径
同名模块重新加载:reload
1
2from imp import reload
reload('module_name')导入扩展
- from module_name import * :模块变量私有化
- import:引用模块中的变量、函数、类,数据互相影响
- from :拷贝源模块的变量、函数、类到当前模块,相互独立
函数可变参数传递与拆包
func(*args, **kwargs)
发布时间: 2020-08-20 15:18:58
最后更新: 2022-01-21 23:09:05
本文标题: 博刊:今日物语:CP3——2020.08 二周目
本文链接: https://chthollists.github.io/post/6b847300.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明作者和出处!
