欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python学习11--函数(二)

程序员文章站 2022-04-19 12:37:22
Python学习11--函数(二)Python学习11函数内部函数闭包装饰器学习视频:b站 【千锋教育】Python 900集书籍: Head First Python(中文版)学习总结笔记,侵删Python学习11函数内部函数在函数内再声明一个函数。内部函数修改外部函数的局部不可变变量,需要关键字nonlocal。对于可变变量可直接访问修改。def x1() : a = 100 def x2() : nonlocal a a+=100...


学习视频:b站 【千锋教育】Python 900集
书籍: Head First Python(中文版)
学习总结笔记,侵删

Python学习11

函数

内部函数

在函数内再声明一个函数。
内部函数修改外部函数的局部不可变变量,需要关键字nonlocal。对于可变变量可直接访问修改。

def x1() :
    a = 100
    def x2() :
        nonlocal a
        a+=100
    x2()
    print(a)
x1()

Python学习11--函数(二)

闭包

依据函数提出的概念,在函数内定义一个内部函数,然后将内部函数进行返回,使之可以在外部进行调用。

def x1() :
    a = 100
    def x2() :
        nonlocal a
        a+=100
        print(a)
    return x2
x = x1()
x()

Python学习11--函数(二)

装饰器

在闭包的基础上,函数作为参数。

def x1(func) :
    def x2() :
        func()
        print(1)
        
    return x2

@x1
def f() :
    print("xxxxxx")

f()

Python学习11--函数(二)
f()为被装饰函数,x1()为装饰器
@x1会将被装饰函数f()作为参数传给装饰器x1(),然后执行x1()
又因为x1()返回了函数x2(),所以此时f = x2
执行语句f()时执行了内部函数x2()

当存在多层装饰器时,离得近的先进行装饰

def x1(func) :
    def x3() :
        func()
        print(1)

    return x3

def x2(func) :
    def x3() :
        func()
        print(2)

    return x3

@x2
@x1
def f() :
    print("xxxxxx")

f()

Python学习11--函数(二)
装饰器也可带参数,需多封装一层(三层),最外层的函数负责接收装饰器参数

匿名函数

s = lambda a,b : a+b
r = s(1,2)
print(r)

Python学习11--函数(二)

递归函数

本文地址:https://blog.csdn.net/CCH1125/article/details/107125323