函数内变量的作用域

变量的作用域与其定义方式有关,可以分为全局变量和局部变量。

①全局变量:变量在函数外部定义,变量的作用域是全局

②局部变量:变量在函数内部定义,变量的作用域在函数内部

>>> a=1        #全局变量
>>> def fun1():
    b=2      #局部变量
    print(a,b)

全局变量能够进入局部变量

>>> a=1
>>> def fun1():
    b=2
    print(a,b)

>>> fun1()
1 2

但是不能被修改,如果需要需改必须global

>>> a=1
>>> def fun1():
    a+=1
    b=2
    print(a,b)

>>> fun1()
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
fun1()
File "<pyshell#14>", line 2, in fun1
a+=1
UnboundLocalError: local variable 'a' referenced before assignment

>>> a=1
>>> def fun1():
    global a
    a+=1
    b=2
    print(a,b)

>>> fun1()
2 2

局部变量不能进入全局变量,如果要进入,也需要global

>>> a=1
>>> def fun1():
    b=2
    print(a,b)

>>> fun1()
1 2
>>> b
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
b
NameError: name 'b' is not defined

>>> a=1
>>> def fun1():
    global b
    b=2
    print(a,b)

>>> fun1()
1 2
>>> b
2

嵌套函数局部变量分为局部里层和局部外层

局部外层能进入局部里层,但是不能修改,要修改则nonlocal

>>> a=1        #全局变量
>>> def fun1():
    b=2      #局部外层
    def fun2():
      c=3    #局部里层
      print(a,b,c)
    fun2()

>>> fun1()
1 2 3

>>> a=1
>>> def fun1():
    global a
    a+=1
    b=2
    def fun2():
      nonlocal b
      b+=1
      c=3
      print(a,b,c)
    fun2()

>>> fun1()
2 3 3

闭包:一个闭包就是调用一个函数A,这个函数A返回了一个函数B。这个返回的函数B就叫做闭包。(但是B函数,一定要是嵌套在函数A里面) 。在调用函数A的时候传递的参数就是自由变量。返回函数体。

>>> def fun1():
    b=2
    def fun2():
      c=3
      print(b,c)
    return fun2

>>> fun1()
<function fun1.<locals>.fun2 at 0x00000282D128A840>

回调函数:

>>> def fun1():
    print('666')

>>> def fun2(a):
    a()
    print(888)

>>> fun2(fun1)
666
888

递归函数:一个函数自身条用自身,需要有一个终止条件

>>>def age(n):

    if n==1:
return 10
else:
return age(n-1)+2

转载于:https://www.cnblogs.com/wangwei13631476567/p/8694641.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值