nonlocal

首先,要明确 nonlocal 关键字是定义在闭包里面的。请看以下代码:

x = 0
def outer():x = 1def inner():x = 2print("inner:", x)inner()print("outer:", x)outer()
print("global:", x)

结果

# inner: 2
# outer: 1
# global: 0

现在,在闭包里面加入nonlocal关键字进行声明:

x = 0
def outer():x = 1def inner():nonlocal xx = 2print("inner:", x)inner()print("outer:", x)outer()
print("global:", x)

结果

# inner: 2
# outer: 2
# global: 0

看到区别了么?这是一个函数里面再嵌套了一个函数。当使用 nonlocal 时,就声明了该变量不只在嵌套函数inner()里面
才有效, 而是在整个大函数里面都有效。

global

还是一样,看一个例子:

x = 0
def outer():x = 1def inner():global xx = 2print("inner:", x)inner()print("outer:", x)outer()
print("global:", x)

结果

# inner: 2
# outer: 1
# global: 2

global 是对整个环境下的变量起作用,而不是对函数类的变量起作用。

转载于:https://www.cnblogs.com/brad1994/p/6533267.html

Python nonlocal 与 global 关键字解析相关推荐

  1. global在python_在Python中使用“global”关键字

    在Python中使用"global"关键字 我从阅读文档中了解到,Python有一个单独的函数命名空间,如果我想在该函数中使用全局变量,我需要使用global. 我正在使用Pyth ...

  2. Python中的global关键字的用法

    Python中的global关键字的用法 global的英文相比你肯定知道,全球的,总的.那么正Python编程语言中,结合global的中文意思你会更加的理解这个关键字的用法.我们使用global关 ...

  3. Python 全局变量与global关键字

    Python 全局变量与global关键字 ​ 在Python的变量使用中,经常会遇到这样的错误: local variable 'a' referenced before assignment 它的 ...

  4. nonlocal和global关键字

    回顾: 1. Python的函数的概述函数定义函数调用2. Python函数中参数的类型和返回值形参和实参形参类型:普通参数: 实参的传递的顺序和个数和形参一直关键字参数: 指定传递的实参被特定形参接 ...

  5. python nonlocal 与 global 详解

    变量作用域问题 case1 通常在函数之外无法访问到函数内的变量 def f1():a=1 print(a) NameError: name 'a' is not defined case2 但函数内 ...

  6. Python全局变量及Global关键字( Global variable in Python)

    目录 1. Python全局变量 2. 简单的示例 3. 全局变量的有效作用范围 4. 在函数内部修改变量 5. global关键字 6. 跨模块的情况 1. Python全局变量 Python全局变 ...

  7. python中的global是什么意思_Python中的global关键字,你了解吗?

    前言 今天来了解下 Python 中的 global 关键字. Python变量的作用域 实战案例演示之前,先要了解下 Python 的作用域. 曾经在闭包的文章 <python小课堂26 - ...

  8. python中nonlocal是什么意思_Python中关键字nonlocal和global的声明与解析

    请问Python3的关键字有哪些 python一共有35个关键字,在python37版本,新添加了async和await,可以通过import keyword借用keyword模块中的kwlist方法 ...

  9. python local global_python global与nonlocal关键字

    函数作用域 a = 1 print("函数outer调用之前全局变量a的内存地址: ", a , id(a)) def outer(): a = 2 print("函数o ...

最新文章

  1. PLSQL程序编写杂烦数据表信息编写批量排版
  2. 微信,QQ这类IM app怎么做——谈谈Websocket
  3. php 上传多文件_php 多文件上传的实现实例
  4. java正则获取数字_Java通过正则表达式获取字符串中数字的方法示例
  5. 金九银十,年轻人跳槽时,尽量不要选择这三类得不偿失的公司
  6. rust游戏亮度怎么调亮点_之前用Rust写的扫雷小游戏
  7. 服务器安全设置篇(珍藏补充版中)
  8. 格力手机色界G0245D-Root-最简指南
  9. 微信小程序-婚礼邀请函页面
  10. 视频分辨率QCIF、CIF、2CIF、4CIF,D1~D5
  11. 旅游行业的手机App Top5
  12. 浅谈TPM设备管理系统、推行要素和目的
  13. 形容java工作者的句子_一些形容工作态度的句子
  14. Python的mpl_finance模块从2020年已经提醒弃用,新mplfinance模块详解(二)
  15. TW6869 drivers porting for freescaleandroid
  16. 萌翻全场!硕士爸爸怀抱1岁萌娃参加毕业典礼:带他提前20年体验毕业
  17. 动态规划-背包问题、兑换零钱问题、旅行商问题
  18. 基于Android的校园一卡通App平台
  19. 用vue2写的开发者在线简历导出
  20. HTML学生个人网站作业设计:动漫网站设计——斗破苍穹动漫(6页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载

热门文章

  1. JAVA子类调用父类构造方法
  2. MySQL新建用户,授权,删去用户,修改密码操作
  3. 不能显示隐藏文件的问题
  4. boost::filesystem::directory_iterator() 出现段错误 Sementation fault
  5. python yield理解_Python3 中 Yield 理解与使用
  6. linux命令行学习游戏,如何在Linux命令行中下载GOG游戏
  7. linux3.10高端内存,Linux内存管理之高端内存映射
  8. 圣经 英文有声 android,英文有声+Epub Foundation Series 7部 Isaac Asimov - Audiobook
  9. python画数学函数_Python 绘制你想要的数学函数图形 !
  10. 负载均衡轮询算法和服务器性能,负载均衡算法