声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的​​教学网站​​。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

请看下面的这个函数:

>>>def maker(N):

... def action(X): # Make and return action

... return X ** N # action retains N from enclosing scope

... return action

...

这定义了一个外部的函数,这个函数简单地生成并返回了一个嵌套的函数。如果我们调用外部的函数:

>>>f = maker(2)        # Pass 2 to N

>>>f

<function action at 0x014720B0>

我们得到的是生成的内嵌函数的一个引用。这个内嵌函数是通过运行内嵌的def而创建的。如果现在调用从外部得到的那个函数:

>>>f(3)           # Pass 3 to X,N remembers 2: 3 ** 2

9

>>>f(4) # 4 ** 2

16

当然,最好是简单地避免在def中嵌套def,这会让程序更加得简单。下面的代码就是前边例子的等效性形式,这段代码就避免了使用嵌套。

>>>def f1():

... x = 88 # Pass x along instead of nesting

... f2(x) # Forward reference okay

...

>>>def f2(x):

... print(x)

...

>>>f1()

88