内嵌函数和闭包
#内嵌函数和闭包 ''' 全局变量与函数中的变量 global:改变全局变量 ''' count=5#全局变量 def my(): count=10#局部变量 print(count) my()#10 def my(): global count count=10 print(count) my()#10 ''' 内嵌函数 ''' def fun1(): print("fun1在被调用") def fun2(): print("fun2在被调用") fun2() fun1()#fun1在被调用fun2在被调用 ''' 闭包(clocune)对代码进行提炼与概括,公共用式 ''' def funx(x): def funy(y): return x*y return funy print(funx(3)(5))#15 ''' def funx(x): def funy(y): return x*y return funy 像return funy中调用不是funy()在这个函数中,funy是一个处于funx中的局部变量函数,在funy()没有被定义前调用funy是会出现x与 y未进行赋值的情况。 在整个函数流程中,funy是funx的局部变量,funy返回的是x*y,而funx返回的是funy运行调用的结果,由于这是一个有参数的函数, 所以在调用函数前都需要将方法进行参数的赋值。 ''' def fun1(): x=[5] def fun2(): x[0] *= x[0] return x[0] return fun2() print(fun1())#25 ''' def fun1(): x=5 def fun2(): x *= x return x return fun2() fun2是fun1中的局部变量,x=5是fun2的全局变量,fun2中的x未进行定义,所以不能访问到x=5的全局变量 更改将x放到列表中 ''' ''' nonlocal申明不是局部变量 ''' def fun1(): x=5 def fun2(): nonlocal x x *= x return x return fun2() print(fun1())#25