被封闭里面的函数简称闭包
Legb控制范围
闭包的重要特性:封存上下文,这一特性可以巧妙的被用于现有函数的包装,从而为现有函数更加功能。而这就是装饰器。
#装饰器:闭包,函数调用
def FuncX(x):
print("-------开始------")
def FuncY(y):
print("函数内")
return x*y
print("--------结束-----")
return FuncY
x=FuncX(3)
print(x(4))
#开始、结束、函数内、12(先开辟一个空间在引用在调用)
#----------------------------------
#装饰器
def FuncX(f):
print("-------开始------")
def FuncY():
f()
print("函数内")
print("--------结束-----")
return FuncY
#装饰器
@FuncX#语法糖
def test():
print("test....")
test()
#----------------------------------------------------
#装饰器
def FuncX(f):
print("-------开始1111------")
def FuncY():
f()
print("函数内")
print("--------结束-1111----")
return FuncY
def test():
print("test....")
x=FuncX("test")
#-----------------------------------
#装饰器
def FuncX(f):
print("-------开始1111------")
def FuncY():
f()
print("函数内")
print("--------结束-1111----")
return FuncY
def test():
print("test....")
test=FuncX(test)
test()
#--------------------------------------
#装饰器
#底锅羊肉(50)
#麻将,豆皮(10)
#麻将,香菜(5)
def doupi(f):
def caidan1():
print("豆皮麻资10块")
return 10+f()
return caidan1
def xiangcai(f):
def caidan2():
print("香菜麻资5块")
return 5+f()
return caidan2
@doupi
def diguo():
print("底锅50")
return 50
x=diguo()
print(x)
#________________________________________________________
#排序
list1=[1,5,9,12,20,10]
a=10
b=5
a,b=b,a
print(a,b)
#-------------------------
list1=[1,5]
c=1
b=5
c=a
a=b
b=c
print(a,b)
#--------------------------------
list1=[1,7,2,3,8,11,22,5]
for i in range(len(list1)):
for j in range (len(list1)-i-1):
if list1[j]>list1[j+1]:
list1[j],list1[j+1]=list1[j+1],list1[j]
print(list1)
#--------------------------------------------
class person:
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return"姓名:%s,年龄: %d"%(self.name,self.age)
def __lt__(self, other):
if self.name<other.name:
return True
#person对象列表
people=[person("abc",20),person("aaa",22),person("abc",25),person("aaa",30)]
people.sort()
for m in people:
print(m)
#__________________________________________________________________________
#快速排序
L=[1,5,9,12,20,10]
def quick_sort(L,start,end):
if start < end:
i , j,pivot =start ,end,L[start]
while i<j:
while(i < j)and(L[j] >=pivot):
j =j-1
if (i<j):
L[i] =L[j]
i=i+1
while(i<j)and(L[i]<pivot):
i=i+1
if(i<j):
L[j]=L[i]
j=j-1
L[i]=pivot
quick_sort(L,start,i-1)
quick_sort(i,i+1,end)
#-----------------------------------------------------------------------------------
#