1、global 关键字
如果在函数内部需要修改全局变量那么需要使用global关键字
x=1 def mfun(): global x x=2 print(x) >>> mfun() 2
2、内嵌函数(内部函数)
内部函数的的作用域在外部函数作用于之内,及只能在外部函数内调用内部函数
def outside(): print("正在调用outside") def inside(): print("正在调用inside") inside() outside() inside()#这句话是错的 正在调用outside 正在调用inside Traceback (most recent call last): File "C:\Users\ENVY\Desktop\learnning Python\text.py", line 7, in <module> inside() NameError: name ‘inside‘ is not defined
3、闭包(closure)
def line_conf(): def line(x): return 2*x+1 return line # return a function object my_line = line_conf() print(my_line(5))
def line_conf(): b = 15 def line(x): return 2*x+b return line # return a function object b = 5 my_line = line_conf() print(my_line(5)) # 返回25
在内部函数中只能对外部函数的局部变量进行访问,但是不能修改,如果需要修改则需要用到nonlocal关键字,委屈求全可以使用“容器类型”代替
def line_conf(): b = 15 def line(x): nonlocal b b=20 return 2*x+b return line # return a function object b = 5 my_line = line_conf() print(my_line(5)) #返回30
def line_conf(): b = [15] def line(x): b[0]=20 return 2*x+b[0] return line # return a function object my_line = line_conf() print(my_line(5)) #返回30