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

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