Python入门(十八):变量作用域与嵌套函数

点击跳转
《Python入门系列目录》


1. 局部变量和全局变量

  • 局部变量:只能在特定的函数中可以访问的变量
  • 全局变量:定义在所有函数最外面的变量
  • 分辨局部变量与全局变量的规则
    • 假设有一个变量为a,它出现在函数f()里面,可以使用如下规则来判断
      • 如果有global关键字修饰变量a,则a为全局变量
      • 否则,假如a是参数或者出现在等号左边,则a是局部变量
      • 否则,a与函数f外层的变量a的属性相同
  • 局部变量可以在外部被赋值,但不可以在外部被调用

2. 嵌套函数

  • 嵌套函数是指在函数内定义的函数
  • 定义在其他函数内部的函数称为内建函数,包含有内建函数的函数称为外部函数
  • 嵌套函数如同局部变量,是局部函数,它只能在外层定义它的函数中使用

3. 嵌套函数下的局部和全局变量

  • 假设有一个变量a,它出现在函数f里面,可以使用如下规则来判断
    • 如果有global关键字修饰变量a,那么不管函数f()是不是嵌套函数,a都为全局变量
    • 否则,假如a是参数或者出现在等号左边,则a是局部变量
    • 否则,a应继承上层函数中a的属性
      • 如果函数f不是嵌套函数,那么a为全局变量
      • 如果函数f是嵌套函数,那么a就是上层的a
a = 1  # 全局变量

def F3():
    def F():
        global a  # a是最外层的全局变量
        print("In F3's F, a =", a)

    a = 3
    F()

F3()
a = 1

def F4():
    global a

    def F():
        a = 2  # a是F的局部变量
        print("In F4's F,a=", a)

    F()
    print("In F4, a =", a)  # a是全局变量

F4()
a = 1

def F5():
    def F():  # a不是F的局部变量,那就继承上层函数中a的属性
        print("In F5's F,a =", a)

    a = 3
    F()

F5()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值