点抢先看

1。独特的嵌套函数蟒蛇?

2。嵌套范围和封闭现象?

3。外地关键字和嵌入范围修改变量

前情回顾,对索引机制,我们引入了LEGB变量:一个变量,首先查找(函数内)本地; 看局部范围内嵌套功能后,然后就是找到当前全球范围内。

到目前为止,我们还没有提交了一份范围嵌套范围,即E,他是一个局部范围的嵌套函数。

什么是嵌套函数?

Python有一个很有趣的地方,那就是高清功能可以嵌套在另一个高清功能。当调用外部函数,运行到内DEF语句,只是完成了内部函数的定义,而不是调用内部函数,除非其嵌套函数调用后明确。

如可以看到的,F1嵌套变量x然后根据参考规则的局部变量F2覆盖全局变量x = 99,引用到x = 88。

下面我们来说说一个特别的嵌套作用域:

函数结束后立即局部范围内的故障,并嵌套范围仍然是嵌套函数返回后有效。

本实施例中是非常重要的,也很有趣,函数f1定义函数f2,在x的嵌套范围F1 F2变量引用,函数f1和f2对象返回作为返回。最值得注意的是,我们得到由变量返回的F2动作,虽然这个时间的功能,F1已经拉了过来,但F2还记得变量x F1的嵌套作用域的名称。

上述现象被称为闭合语言:嵌套的作用域功能可以记住的可变值,虽然范围不存在。

有一个工厂的功能应用,工厂函数定义,简单地生成,并通过调用工厂函数返回一个内置的功能,而不仅仅是一个回电,所以外部函数,你可以得到嵌套函数的引用,当函数通过调用工厂函数嵌入,内部操作DEF语句创建。

再看一个例子:

在这里我们可以看到,内置的功能要记住两个嵌套嵌套效应的作用是可变的域,变量k,参数N,力挺制造商的回报和退出。我们调用外部函数制造商,得到嵌入动作的函数的引用。这种嵌套函数方法会经常用到引进的装饰在后。此嵌套作用域参考函数是主蟒方法可以保留状态信息。

下面再谈谈另一个关键字外地

通过修改一个全局变量引用的全局声明局部函数,然后对嵌套内联函数相应的内部变量想在范围的变化,就必须声明使用的非本地。

在这里我们可以看到几个点,我们指的是由嵌入范围in_num非本地变量嵌套功能键,然后我们可以修改自己的嵌套函数,即使测试功能已经退出称之为“记忆”仍然有效。

然后最后一个例子:

的不同内置函数副本返回多个呼叫到工厂函数F和G,嵌入变量是独立的彼此隔离彼此in_num的。

作者






本文链接:Python内嵌作用域与函数闭包

您可能也会喜欢

友情链接:

心经唱诵 大悲咒注音 经文