阶段复习三
Day12
闭包
闭包本质:就是一个嵌套函数。
格式:
def 外部函数( ):
def inner():
pass
return inner
外函数名( )
装饰器
本质就是一个闭包。
作用:在不修改源代码和调用方式的情况下,给函数添加修改功能。
格式:
def decorator():
例如:
def decorator(func):
def inner():
print("这是装饰器")
func() # 递归的特殊写法
return inner
@decorator
def A():
print("这是一个源代码")
A()
_____________________________________________________________________________
Day13
递归
定义:自己调用自己来运行程序。
本质:函数。
# 累乘
# 计算10的阶乘
迭代器(iter)
什么是迭代器?
操作一堆数据,数据之间是有一定关联性的。
遍历:按照顺序逐个获取可迭代对象进行取值。
格式:
变量名 = iter(可迭代对象)
变量名 = 可迭代对象.__iter__( )
next( )
作用:返回迭代器的下一个项目。
格式:
next(可迭代对象,default)——>元组
default:可以选择填写,如果下一个项目没有数值,会返回default,如果不设置会报错。
a=(1,)
a=iter(a)
print(next(a))
生成器
生成器的作用:自定规则,生成数据
本质:还是一个迭代器。
生成器的特征:一个函数,有一个关键字yield,就是生成器。
#新的简写生成器,这个语法糖。
_____________________________________________________________________________
Day14
模块与包
什么是模块:本质就是一个Python文件。
模块名就是文件名
作用:是储存一些功能的函数,让编写一个python文件使用其他python的方法或者函数。
模块有三种:
1.内置模块
2.第三模块
3.自定义模块
如何下载第三方模块
pip install 模块名
如何卸载第三方模块
pip uninstall 模块名
使用模块
import 模块名
from 模块名 import 指定函数
不同包的模块导入
if__name__ == '__main__':
就是区别是否为一个程序运行。
例如:
demo2的文件夹
def qq_login(password):
qq_password = "12345"
if password == qq_password:
print("登录成功")
# test 文件夹
import demo.demo2.qq_login as qq_login # 只能从外一层进行一层层导入。
if __name__=='__main__'
passwd = input("请输入密码")
qq_login.qq_login(passwd)
_____________________________________________________________________________
Day15
文件操作
格式:
变量名 = open(文件名/文件路径,操作模式,字符编码)
操作模式
w:写入模式。
a:追加数据,如果文件有数据会在数据后面。
r:读取数据。
数据类型
b:byte,二进制模式,字节编码的方式进行操作数据。
t:文本模式。
f = open("1.txt",'w',encoding='utf-8')
f.write("同学们,该结束Python的基础学习了")
f.close()
with
with open(文件名/文件路径,操作模式,字符编码)
操作模式的代码
例如:
with open('1.txt','w',encoding='utf-8') as f:
f.write("老师又高又帅\n")
f.write("同学们也是又高又帅\n")
相对路径和绝对路径
计算机中绝对路径: 从磁盘开始,一直到具体的文件位置。
相对路径:以文件为参考点,进行一个模糊位置定义。
常用模块
time模块
import time
print(time.time()) # 系统的时间戳——>从1970年~现在的毫秒值
# 如何翻译?
print(time.strftime("%y-%m-%d-%x"))
其中:gtm.time() #此代码输出的时间是格林威治的时间,即世界标准时间。
random模块
random()—>取值范围[0,1)
random()—>获取int类型的整数
sys模块
例如:
import sys
print(sys.path) #获取环境变量
print(sys.argv) #获取当前文件位置
print(sys.version) #获取当前python的版本信息
print(sys.platfrom) #当前操作系统的架构
json模块
json:是一种文件的储存格式。
作用:兼容性强,还能够保留原来的类型。
json.dump(原数据)—>把数据序列化,转化为二进制
json.load()—>反序列化
OS模块
import os
print(os.getcwd()) # 获取当前文件所在位置
os.mkdir("天玑9200") # 新建文件夹
os.rename("天玑9200","骁龙8Gen2") # 更改名字
os.chdir("test") # 切换程序执行位置
print(os.listdir()) # 当前文件的所有文件夹
弹窗:
for i in range(70):
os.system("start cmd")
hashlib模块
hashlib.md5—>md5加密
hexdigest()—>转化为加密的16进制数值
digest()—>2进制
re模块
就是正则算法模块
模式:(下面的是详细描述)
findall()
findall():查找所有满足条件的
格式:findall(匹配的字符串,被匹配的字符串)
import re
s1 = "http://pan.baidu.com/s/1NSsNQwKCtpEU-ZrrsGWwug?pwd=f9Wk"
a1 = re.findall("o",s1)
print(a1)
a1 = re.findall("pan",s1)
print(a1) # 返回值是列表
match()
从起点位置开始进行,如果匹配成功就会返回一个对象,如果未匹配成功
import re
s1 = "http://pan.baidu.com/s/1NSsNQwKCtpEU-ZrrsGWWug?pwd=f9Wk"
a = re.match('http',s1)
print(a)
a = a.span()
print(a) # 从起点到终点的下标值[x,x)—>左闭右开区间
a = re.match('http',s1).span()
print(a)
b = re.match("/pan",s1)
print(a)
search()
浏览整个字符串去匹配第一个,未匹配成功返回None
import re
s1 = "http://pan.baidu.com/s/1NSsNQwKCtpEU-ZrrsGWWug?pwd=f9Wk"
search(匹配的字符串,被匹配的字符串)
a = re.search('/pan',s1).span() # span获取下标值
print(a)
sub()
根据规则替换字符串
格式:
sub(匹配的字符串,替换的字符串,被匹配的字符串)
import re
s1 = "http://pan.baidu.com/s/1NSsNQwKCtpEU-ZrrsGWWug?pwd=f9Wk"
a = re.sub(r'[0-9]','*',s1)
print(a)
a = re.sub(r'[a-z]','*',s1)
print(a)
a = re.sub(r'[A-Z]','*',s1)
print(a)
a = re.sub(r'[a-zA-Z]','*',s1)
print(a)
a = re.sub(r'[0-9a-zA-Z]','*',s1)
print(a)
split
srt.split()与re.split()一样。
import re
s1 = "http://pan.baidu.com/s/1NSsNQwKCtpEU-ZrrsGWWug?pwd=f9Wk"
a = re.split(r'/',s1)
print(a)