python3 函数

返回函数
def func(flag):
    def sum(a,b):
        return a+b
    def jianfa(a,b):
        return a-b
    if flag == "+":
        return sum
    else:
        return jianfa

result = func("+")
print(result(1,2))
View Code
 高阶函数
def caculate(num1,num2,func):
    result = func(num1,num2)
    print(result)

def sum(a,b):
    return a + b
def jianfa(a,b):
    return a - b

caculate(6,2,sum)
View Code
匿名函数(lambda函数)
s = [{"name":"zs","age":18},{"name":"zs2","age":19},{"name":"zs3","age":18.5}]

# 按age的值排序
result = sorted(s, key=lambda x: x["age"])
# 按name的值排序
result2 = sorted(s, key=lambda x: x["name"])
print(result)
print(result2)

result3 = (lambda x,y : x+y)(1,2)
print(result3)
View Code
 闭包格式
def test():
    a = 10
    def test2():
        print(a)
    return test2
# 等同于执行test函数里的test2函数
newd = test()
newd()
View Code
 闭包例子
def test(content,length):
    def test2():
        print("-"*(length // 2) + content + "-"*(length // 2))
    return test2
# 等同于执行test函数里的test2函数
newd = test("闭包",20)
# 可以多次执用
newd()
newd()

# ----------闭包----------
# ----------闭包----------
# ----------xxx----------
View Code
 闭包注意
def test():
    num = 10
    def test2():
        # 加上这句才可以修改外部的num变量
        # nonlocal num
        num = 666
        print("test2",num)
    print(num)
    test2()
    print(num)
    return test2

newd = test()

# 10
# test2 666
# 10
View Code

 

装饰器
def check(func):
    def inner(*args,**kwargs):
        print("登录验证")
        func(*args,**kwargs)
    return inner
@check
def fss(num1,num2,num3):
    print(num1,num2,num3)

@check
def fss2(num):
    print(num)
fss(1,2,num3="aa")
fss2("b")
View Code

   带参数

def check(char):
    def getzsq(func):
        def inner(*args,**kwargs):
            print(char+"--","登录验证")
            func(*args,**kwargs)
        return inner
    return getzsq
@check("*")
def fss(num1,num2,num3):
    print(num1,num2,num3)

@check("*")
def fss2(num):
    print(num)
fss(1,2,num3="aa")
fss2("b")
View Code

 

转载于:https://www.cnblogs.com/xaiobong/p/10347454.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值