生成器 迭代器 可迭代对象 深拷贝浅拷贝 闭包 装饰器 正则
python的导包
python采用的导包方式有多种
如:import x(包名)
比如 导包时 import hashlib 调用时 hashlib.md5("123456".encode("utf-8"))
import x(包名).xxx(方法名)
比如导包时 import os.path 调用时 path.join(postion,i)
from x(包名) import xxx(方法名) as xx(别名)
比如导包时 from os import path as pth 调用时 pth.abspath("../")
from x(包名) import *
比如导包时 from package1 import * (package1是自定义的包) 调用时直接写函数名即可
注意这种方法在调用时 只有包内定义的__all__=['func1','func2']列表中存在该方法时 该方法才能调用
packag1包
可以看到func3不能直接被调用
python的copy
在py中想要对一个对象进行复制时
可以使用 = copy包中的copy方法 deepcopy方法
这三者的不同之处主要体现在
等号复制时相当于将对象的地址直接赋值给了新的变量
copy会将第一层的内容复制下来 二层的数据还是以地址的形式复制
deepcopy则会递归 将所有数据以数值的方式重写一份
下面举个例子
结果如上
python的迭代器与可迭代对象
生成器可以生成可迭代对象 如列表 迭代器等
使用函数生成器生成斐波那契列表:
生成器也可以变成列表 使用list函数
函数闭包 装饰器
在函数调用时 默认是无法直接使用其它函数的值或方法的 在python中可以函数写到另一个函数的内部 内部的函数能调用外部函数的变量和方法 这样就叫做函数闭包
比如:
在上述的闭包函数中外层函数的返回值为一个函数对象 内层函数的返回值 为e是c+d的结果 其中c又是外层函数的一个运算结果
当我以上述的形式调用函数时 func1返回一个函数对象func2且计算出c的值 为3 再调用func2计算出e将e返回给ans 运行结果如下
装饰器就是通过闭包函数来实现的 使用装饰器可以在不改变原有的代码的基础上添加或修改功能
比如实现用户的登录认证
可以看到 我们定义了一个装饰器check来检测用户的输入是否为正确的输入 装饰器 调用时 首先将原有的函数传递给外层函数 装饰器函数继续运行 将内部的闭包函数传递给函数login并取代该函数