Python基础-作用域

作用域

程序创建, 访问, 改变一个变量时, 都是在一个保存该变量的空间内进行, 这个空间被称为命名空间, 即作用域

  • Built-in 内置

    • 可以在Python环境中的任何模块, 任意位置访问和调用
  • Global 全局变量

    • 只作用于当前模块(可以理解为当前文件)

    • 可以简单地理解为定以在函数外的变量就是全局变量, 如果在函数体定义那就时局部变量.

    • 如何将局部变量变成全局变量?

      • 使用global关键字

        a = 1
        
        def foo():
            global a
            a = 2
            print(a)
        
        foo()
        print(a)
        
  • Enclosed(嵌套) 自由变量

    在嵌套函数中, 访问函数体之外的非全局变量

    • 只作用于嵌套函数体

    • 最大的应用就是闭包

    • 自由变量是个相对的概念

    • 将局部变量变成自由变量

      • 使用nonlocal关键字

        def make_averager():
            total = 0
            count = 0
            def averager(value):
                nonlocal total, count
                total += value
                count += 1
                return total / count
            return averager
            
        my_avg = make_averager()
        print(my_avg(1))
        print(my_avg(2))
        
  • Local局部变量

    • 只作用于当前函数体

    • 一旦变量在函数体中赋值, 那么该变量相对该函数来说就是局部变量

      a = 1
      b = []
      
      
      def foo():
          a = 2
          b.append(2)
          # 局部变量会在函数声明的时候就定义好
          # 不是按照我们逻辑思维上先执行全局变量b.append(2), 然后再声明一个局部变量b
          # 而是再函数声明之初就已经定义了b为局部变量
          # b = 3
          return None
      
      foo()
      print(a)
      print(b)
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值