收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Python的函数定义可以嵌套的,也就是允许在函数内部创建另一个函数,这样的函数叫做内嵌函数或者内部函数。
>>> def fun1():
print('fun1正在被调用...')
def fun2():
print('fun2正在被调用...')
fun2()
>>> fun1()
fun1正在被调用...
fun2正在被调用...
>>>
3、闭包
闭包(closure)是函数式编程的一个重要语法结构,函数式编程是一种编程范式,著名的函数编程语言就是LISP语言(主要用于绘图,AI)
不同的编程语言实现闭包的方式不同,Python中闭包从表现上定义为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。
>>> def FunX(x):
def FunY(y):
return x*y
return FunY
>>> i = FunX(8)
>>> i
<function FunX.<locals>.FunY at 0x024EE390>
>>> type(i)
<class 'function'>
>>> i(5)
40
>>> FunX(8)(5)
40
>>>
内部函数FunY()就是闭包。
在外部调用FunY()是不允许的:
>>> FunY(5)
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
FunY(5)
NameError: name 'FunY' is not defined
>>>
闭包函数调用外部作用域但不是全部变量x,报错“局部变量x,不能在定义之前被使用”
>>> def Fun1():
x = 5
def Fun2():
x*=x
return x
return Fun2()
>>> Fun1()
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
Fun1()
File "<pyshell#41>", line 6, in Fun1
return Fun2()
File "<pyshell#41>", line 4, in Fun2
x*=x
UnboundLocalError: local variable 'x' referenced before assignment
可以进行如下改造,x变为一个列表,因为列表不是存在栈里面
>>> def Fun1():
x = [5]
def Fun2():
x[0]*=x[0]
return x[0]
return Fun2()
>>> Fun1()
25
(1)、关键字 nonlocal
还可以使用关键字nonlocal,把x强制声明为非局部变量。
>>> def Fun1():
x = 5
def Fun2():
nonlocal x
x*=x
return x
return Fun2()
>>> Fun1()
25
收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
](https://bbs.csdn.net/topics/618679757)**
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!