Python函数之globals、locals、global、nonlocal
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相关推荐
- Python 函数解释:locals()
语法 locals() 函数语法: locals() 返回字典类型的局部变量. 示例 In [3]: def test(args):...: a = 1...: b = 1...: print(loc ...
- 第四篇: python函数续
1.函数的嵌套 函数的嵌套调用:在调用一个函数的过程中,又调用了其它函数 示例1: def bar():print('from nbar')def foo():print('from foo')bar ...
- python函数进阶小结_python之函数进阶
1. 今日内容 1.1 函数的参数 *的魔性用法 函数形参最终顺序 1.2名称空间 全局名称空间,局部名称空间,内置名称空间 取值顺序与加载顺序 作用域 内置函数:globals() locals() ...
- Python函数(西安加油!!!)
文章目录 前言 结构 函数的返回值(return的作用) 第一个作用:结束函数 第二个作用:给函数的执行者返回具体的值 函数的传参 实参角度 形参角度 *的用法 函数的注释 从空间角度研究函数 取值顺 ...
- python 函数进阶_python之函数进阶
1. 今日内容 1.1 函数的参数 *的魔性用法 函数形参最终顺序 1.2名称空间 全局名称空间,局部名称空间,内置名称空间 取值顺序与加载顺序 作用域 内置函数:globals() locals() ...
- Python -- 函数
5.1 函数的定义 函数是对功能或者动作的封装 def 函数名(形参列表): # 形式参数函数体(return)return"返回值" # return表示返回,这个函数在调用之后 ...
- 21 Python模块、import语句、搜索路径、变量、命名空间和作用域、dir函数、globals()和locals()函数、reload()函数、Python中的包
21Python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...
- python中locals函数_python中locals和globals函数
首先,是关于名字空间的一个名词解释.是枯燥,但是很重要,所以要耐心些.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值.实际上, ...
- python 函数嵌套和nonlocal关键字
python函数可以嵌套使用,使用也比较简单,举个栗子: def outer():print("outer")def inner():print("inner" ...
最新文章
- 字节最新文本生成图像AI,训练集里居然没有一张带文字描述的图片?!
- 基于UDP的socket客户服务器编程
- 大数据文字游戏_基于大数据的游戏化教学系统研究.docx
- tcp转串口_浅谈串口转以太网技术
- 全面分析 Spring 的编程式事务管理及声明式事务管理--转
- 今天学习了无序列表和有序列表和使用HTML5创建表格
- (筆記) 如何使用ModelSim作前仿真與後仿真? (SOC) (Quartus II) (ModelSim)
- 有人提到田英章欧体田字格范本,说两句。
- java po vo bo是什么以及_Java中VO , PO , BO, DAO ,POJO是什么意思
- 浏览器的窗口大小被改变时触发的事件window.onresize
- MFC对话框/控件下属性中的事件变成空白?
- YOLOv5实现吸烟行为检测
- 不成为阴谋与阳谋的牺牲品(上)
- 手游开发Android平台周边工具介绍
- C-V2X 与智能车路协同技术 的深度融合
- 【PS教程】旧照片修复技巧
- 机器人波波熊_【菠菠智能悦读机器人绘本更新篇】新技能get!BoBo本周新增绘本103本!...
- 重回南京 - 转自点妈文集
- 每一个程序猿必知之SEO
- PostgreSQL 全文检索加速 快到没有朋友 - RUM索引接口(潘多拉魔盒)