当前位置: 移动技术网 > IT编程>脚本编程>Python > Python学习11--函数(二)

Python学习11--函数(二)

2020年07月07日  | 移动技术网IT编程  | 我要评论
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()

在这里插入图片描述

闭包

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

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

在这里插入图片描述

装饰器

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

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

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

f()

在这里插入图片描述
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()

在这里插入图片描述
装饰器也可带参数,需多封装一层(三层),最外层的函数负责接收装饰器参数

匿名函数

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

在这里插入图片描述

递归函数

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网