Python05-内嵌函数和闭包

内嵌函数:

Python支持函数的嵌套,在函数里面定义的函数,无法在外部被调用。

闭包:

如果在一个内部函数里,对外部作用域(但不是全局作用域)的变量进行引用,那么函数就被认为是闭包。

(在Python里,所有东西都是变量,可以将函数直接返回。)

#eg1:
def FunX(x):
    def FunY(y):
        return x*y
    return FunY
i = FunX(8)
i → <fun ……>  #返回函数,没给y的值
type(i)<class 'function'>
i(5)40
#或者
FunX(8)(5)40
FunY(5)  →  报错
#eg2:
def Fun1():
    x = 5
    def Fun2():
        x* = x
        return x
    return Fun2
#Fun1()→  返回函数
#Fun1()()→ 报错
#第一个没错是因为return Fun2即返回函数,没有执行里面的操作,要fun1()()才执行
#闭包中不能修改外部作用域的局部变量,所以报错。

容器:字符串、列表啥都可以往里扔的叫容器类型。

def Fun1():
    x=[5]
    def Fun2():
        x[0] * = x[0]
        return x[0]
    return Fun2()
Fun1()25

(对于列表类型,函数可以直接使用全局列表而不需要采用上节课所说的global声明)

关键字 nonlocal

def Fun1():
    x = 5
    def Fun2():
        nonlocal x
        x* = x
        return x
    return Fun2()
发布了56 篇原创文章 · 获赞 0 · 访问量 776

猜你喜欢

转载自blog.csdn.net/xiuxiuxiu666/article/details/104315982