被封閉裏面的函數簡稱閉包
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) #----------------------------------------------------------------------------------- #