Python函数之globals、locals、global、nonlocal

1.内置函数globals locals

  • a = 100
    lst = [11, 22, 33]# print(globals())  # 获取全局作用域(内置空间与全局空间)变量与值的对应关系。
    # print(locals())# def func():
    #     b = 200
    #     dic = {'name': 'barry'}
    #     print(globals())  # 始终获取全局作用域(内置空间与全局空间)变量与值的对应关系。
    #     print(locals())  # 当前作用域的变量与值的对应关系。
    ## func()def func():b = 200dic = {'name': 'barry'}def inner():c = 150set1 = {1, 2, 3}print(globals())  # 始终获取全局作用域(内置空间与全局空间)变量与值的对应关系。print(locals())  # 当前作用域的变量与值的对应关系。inner()func()
    

2.关键字 global nonlocal

  • 引子

    # 例一:临时名称空间,引用全局名称空间的变量 可以。
    # a = 1
    #
    #
    # def func():
    #     print(a)
    #
    #
    # func()# 例二: 临时名称空间,引用全局名称空间的可变的数据类型 可以。
    # lst = [11, ]
    #
    #
    # def func():
    #     lst.append(666)
    #
    # func()
    # print(lst)# 例三: 先使用一个变量,在定义这个变量,顺序不对,报错。# def func():
    #     print(a)
    #     a = 100
    #
    #
    # func()例四:临时名称空间可以引用全局空间的变量,但是不能改变。a = 1def func():a = a + 1func()
    
  • global

    • 默认情况下临时名称空间可以引用全局空间的变量,不能修改,如果使用global关键字,在临时名称空间修改全局名称空间的变量。

      a = 1
      def func():global aa = a + 1
      print(a)
      func()
      print(a)
      
    • 在临时名称空间可以创建一个全局名称空间的变量。

      def func():global namename = 'barry'
      # print(name)
      func()
      print(name)
      
  • nonlocal

    这个关键字不能修改全局变量,但是可以在内层函数修改外层函数(非全局)的变量。

    # # 例一:内层函数可以引用外层函数的变量。
    # def wrapper():
    #     a = 1
    #     def inner():
    #         print(a)
    #     inner()
    #
    # wrapper()# # 例二:内层函数可以引用外层函数的变量,但是不能修改外层函数的变量。
    # def wrapper():
    #     a = 1
    #
    #     def inner():
    #         a += 1
    #     inner()
    #
    #
    # wrapper()# 例三:内层函数可以引用外层函数的变量,但是不能修改外层函数的变量,如果需要修改,使用nonlocal。
    def wrapper():a = 1def inner():nonlocal aa += 1print(a)inner()wrapper()# 例四:
    def wrapper():a = 1def inner():nonlocal aa += 1print(a)inner()print(a)
    wrapper()
    

Python函数之globals、locals、global、nonlocal相关推荐

  1. Python 函数解释:locals()

    语法 locals() 函数语法: locals() 返回字典类型的局部变量. 示例 In [3]: def test(args):...: a = 1...: b = 1...: print(loc ...

  2. 第四篇: python函数续

    1.函数的嵌套 函数的嵌套调用:在调用一个函数的过程中,又调用了其它函数 示例1: def bar():print('from nbar')def foo():print('from foo')bar ...

  3. python函数进阶小结_python之函数进阶

    1. 今日内容 1.1 函数的参数 *的魔性用法 函数形参最终顺序 1.2名称空间 全局名称空间,局部名称空间,内置名称空间 取值顺序与加载顺序 作用域 内置函数:globals() locals() ...

  4. Python函数(西安加油!!!)

    文章目录 前言 结构 函数的返回值(return的作用) 第一个作用:结束函数 第二个作用:给函数的执行者返回具体的值 函数的传参 实参角度 形参角度 *的用法 函数的注释 从空间角度研究函数 取值顺 ...

  5. python 函数进阶_python之函数进阶

    1. 今日内容 1.1 函数的参数 *的魔性用法 函数形参最终顺序 1.2名称空间 全局名称空间,局部名称空间,内置名称空间 取值顺序与加载顺序 作用域 内置函数:globals() locals() ...

  6. Python -- 函数

    5.1 函数的定义 函数是对功能或者动作的封装 def 函数名(形参列表): # 形式参数函数体(return)return"返回值" # return表示返回,这个函数在调用之后 ...

  7. 21 Python模块、import语句、搜索路径、变量、命名空间和作用域、dir函数、globals()和locals()函数、reload()函数、Python中的包

    21Python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  8. python中locals函数_python中locals和globals函数

    首先,是关于名字空间的一个名词解释.是枯燥,但是很重要,所以要耐心些.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值.实际上, ...

  9. python 函数嵌套和nonlocal关键字

    python函数可以嵌套使用,使用也比较简单,举个栗子: def outer():print("outer")def inner():print("inner" ...

最新文章

  1. 字节最新文本生成图像AI,训练集里居然没有一张带文字描述的图片?!
  2. 基于UDP的socket客户服务器编程
  3. 大数据文字游戏_基于大数据的游戏化教学系统研究.docx
  4. tcp转串口_浅谈串口转以太网技术
  5. 全面分析 Spring 的编程式事务管理及声明式事务管理--转
  6. 今天学习了无序列表和有序列表和使用HTML5创建表格
  7. (筆記) 如何使用ModelSim作前仿真與後仿真? (SOC) (Quartus II) (ModelSim)
  8. 有人提到田英章欧体田字格范本,说两句。
  9. java po vo bo是什么以及_Java中VO , PO , BO, DAO ,POJO是什么意思
  10. 浏览器的窗口大小被改变时触发的事件window.onresize
  11. MFC对话框/控件下属性中的事件变成空白?
  12. YOLOv5实现吸烟行为检测
  13. 不成为阴谋与阳谋的牺牲品(上)
  14. 手游开发Android平台周边工具介绍
  15. C-V2X 与智能车路协同技术 的深度融合
  16. 【PS教程】旧照片修复技巧
  17. 机器人波波熊_【菠菠智能悦读机器人绘本更新篇】新技能get!BoBo本周新增绘本103本!...
  18. 重回南京 - 转自点妈文集
  19. 每一个程序猿必知之SEO
  20. PostgreSQL 全文检索加速 快到没有朋友 - RUM索引接口(潘多拉魔盒)

热门文章

  1. 解除移动/联通网络锁定的方法
  2. 乐天知命,故不忧——基于生存模型进行剩余有效寿命预测的案例讲解
  3. HMM-Viterbi algorithm(Python实现)
  4. 高一下册计算机教案,高一下册物理下册教案设计
  5. 100匹马驮100块石头
  6. Android 实现华为,小米的桌面角标(小红点)
  7. 油田(zoj 1709, poj 1562)
  8. 符合自然的饮食睡眠是最好的养生
  9. 价比千家 搜狗购物查找打造最好购物备选渠道
  10. 【粉丝福利】秋天的第一个雷蛇键盘