Python 裝飾器

被封閉裏面的函數簡稱閉包

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)
#-----------------------------------------------------------------------------------
#

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章