广州个性化网站开发,做网站关键词必须要中文网址,网站开发无锡,上海家政公司排名闭包
闭包的定义:
在函数嵌套的前提下#xff0c;内部函数使用了外部函数的变量#xff0c;并且外部函数返回了内部函数#xff0c;我们把这个使用外部函数变量的内部函数称为闭包
通过闭包的定义#xff0c;我们可以得知闭包的形成条件:
1- 在函数嵌套(函数里面再定义…闭包
闭包的定义:
在函数嵌套的前提下内部函数使用了外部函数的变量并且外部函数返回了内部函数我们把这个使用外部函数变量的内部函数称为闭包
通过闭包的定义我们可以得知闭包的形成条件:
1- 在函数嵌套(函数里面再定义函数)的前提下 2- 内部函数使用了外部函数的变量(还包括外部函数的参数) 3- 外部函数返回了内部函数 2闭包的作用 闭包可以保存外部函数内的变量不会随着外部函数调用完而销毁。
def f1(num):def f2(a,b):r num 100abprint(r)return f2if __name__ __main__:a f1(100)a(100,50)
# 就是一个外部方法接收参数内部方法进行计算并让外部函数返回内部函数的名字
# 目的就是延长外部参数的生命周期装饰器
装饰器的定义 就是给已有函数增加额外功能的函数它本质上就是一个闭包函数。
装饰器的功能特点: 不修改已有函数的源代码 不修改已有函数的调用方式 给已有函数增加额外的功能 # 添加一个登录验证的功能
def check(fn):def inner():print(请先登录....)fn()return innerdef comment():print(发表评论)# 使用装饰器来装饰函数
comment check(comment)
comment()装饰器的语法糖写法
Python给提供了一个装饰函数更加简单的写法那就是语法糖语法糖的书写格式是: 装饰器名字通过语法糖的方式也可以完成对已有函数的装饰
# 添加一个登录验证的功能
def check(fn):print(装饰器函数执行了)def inner():print(请先登录....)fn()return inner# 使用语法糖方式来装饰函数
check
def comment():print(发表评论)comment()说明: check 等价于 comment check(comment) 装饰器的执行时间是加载模块时立即执行 # 添加输出日志的功能
def logging(fn):def inner(num1, num2):print(--正在努力计算--)fn(num1, num2)return inner# 使用装饰器装饰函数
logging
def sum_num(a, b):result a bprint(result)sum_num(1, 2)with语句
try:# 1、以读的方式打开文件f open(1.txt, r)# 2、读取文件内容f.write(xxxxx)except IOError as e:print(文件操作出错, e)finally:# 3、关闭文件f.close()# 1、以写的方式打开文件
with open(1.txt, w) as f:# 2、读取文件内容f.write(hello world)深浅拷贝
import copynum1 1
print(id(num1))
num12
print(id(num1))num2 copy.copy(num1)
print(id(num2))print(以下为不可变类型*5)
li [1,2,3]
print(id(li))
li.append(4)
print(id(li))li2 copy.copy(li)
print(id(li2))
print(li2)print(浅拷贝两层*7)
li3 [1,2,3,[4,5]]
print(id(li3))
# 第二层打印出来的id值是相同的
print(id(li3[3]))li2 copy.copy(li3)
print(id(li3[3]))
print(id(li2))
print(li2)print(深拷贝*50)li4 [1,2,3,[4,5]]
print(id(li4))
# 第二层打印出来的id值是不同的
print(id(li3[3]))li5 copy.deepcopy(li4)
print(id(li5[3]))
print(id(li5))print(浅拷贝外面可变里面不可变*30)
list1 [qw,12,(1,2)]print(id(list1))
list1.append(4)
print(id(list1))
print(id(list1[2]))list12 copy.deepcopy(list1)
print(id(list12))
print(id(list12[2]))140723981244064
140723981244096
140723981244096
以下为不可变类型以下为不可变类型以下为不可变类型
2338845806400
2338845806400
2338845810816
[1, 2, 3, 4]
浅拷贝两层浅拷贝两层浅拷贝两层浅拷贝两层
2338845811136
2338845740608
2338845740608
2338845811584
[1, 2, 3, [4, 5]]
深拷贝深拷贝深拷贝深拷贝深拷贝深拷贝深拷贝深拷贝深
2338845811456
2338845740608
2338845805120
2338845811200
浅拷贝外面可变里面不可变浅拷贝外面可变里面不可
2338847010496
2338847010496
2338844366720
2338847009920
2338844366720re模块正则表达式
\w 匹配非特殊字符 数字、字母、中文、 \W 匹配特殊字符 \s 匹配空格、\n、\t 一个长度 \S 匹配非空格、非\n、非\t 数字、特殊字符、中文等等都行 # 导入re模块
import re# 使用match方法进行匹配操作
result re.match(正则表达式,要匹配的字符串)# 如果上一步匹配到数据的话可以使用group方法来提取数据
result.group()