当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

def fun():  global num1  num1=2  print("函数内修改后num1=",num1)
num1=1
print("初始num1=",num1)
fun()
print("运行完函数后num1=",num1)  

运行结果:

初始num1= 1
函数内修改后num1= 2
运行完函数后num1= 2

使用global关键字就是告诉python编译器这个变量不是局部变量而是全局变量,其实有点像是"引用"的意思

如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:

#!/usr/bin/python3def outer():num = 10def inner():nonlocal num   # nonlocal关键字声明num = 100print(num)inner()print(num)
outer()

以上实例输出结果:

100
100

另外有一种特殊情况,假设下面这段代码被运行:
#!/usr/bin/python3

a = 10
def test():a = a + 1print(a)
test()

以上程序执行,报错信息如下:

D:\software\Python36\python.exe F:/pythonProjects/leetcode/Test.py
Traceback (most recent call last):File "F:/pythonProjects/leetcode/Test.py", line 7, in <module>test()File "F:/pythonProjects/leetcode/Test.py", line 3, in testa = a + 1
UnboundLocalError: local variable 'a' referenced before assignment

错误信息为局部作用域引用错误,因为 test 函数中的 a 使用的是局部,未定义,无法修改。

修改 a 为全局变量,通过函数参数传递,可以正常执行输出结果为:

#!/usr/bin/python3

a = 10
def test(a):a = a + 1print(a)
test(a)

执行输出结果为:

11

转载于:https://www.cnblogs.com/whu-2017/p/9237644.html

global 和 nonlocal关键字相关推荐

  1. python nonlocal的用法_python中的global和nonlocal关键字怎么使用

    global 和 nonlocal关键字 当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了. 以下实例修改全局变量 num: #!/usr/bin/python3 ...

  2. python local global_python global与nonlocal关键字

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

  3. python global和nonlocal_3.关于作用域知识的额外补充global和nonlocal关键字

    本遍文章对global关键字和nonlocal关键字进行补充,这两个关键字在以后做python开发的时候,能不用尽量别用!最好别用!总会出现让你意想不到的后果... 1.先说第一种global,不管在 ...

  4. global与nonlocal关键字

    在Python中,当引用一个变量的时候,对这个变量的搜索是按找本地作用域(Local).嵌套作用域(Enclosing function locals).全局作用域(Global).内置作用域(bui ...

  5. 滚雪球学 Python 之作用域下的 global 和 nonlocal 关键字

    橡皮擦,一个逗趣的互联网高级网虫,新的系列,让我们一起 Be More Pythonic. 滚雪球学 Python 第二轮 已完成的文章清单 十.global 和 nonlocal 作用域 10.1 ...

  6. nonlocal python3_Python中的global和nonlocal关键字

    在进入正题之前先简单说明一下:局部变量:函数或者方法里面定义的变量: 全局变量:本文指module级别的变量(一个python文件就是一个module). global 先看个例子:a = 1 def ...

  7. [转载] python不允许使用关键字_Python中关键字global与nonlocal的区别

    参考链接: Python全局关键字 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xCyansun/article/details/79672634 ...

  8. Python中关键字global与nonlocal的区别

    终于下定决心学习Python了.既然从头开始,就需要认认真真. 首先需要说的是,我是初学Python,这篇文章只是用于展示global和nonlocal关键字的区别,是很简单的知识点,如果你已经学过, ...

  9. python3_函数_形参调用方式 / 不定长参数 / 函数返回值 / 变量作用域 / 匿名函数 / 递归调用 / 函数式编程 / 高阶函数 / gobal和nonlocal关键字 / 内置函数

    1.形参的调用方式 1. 位置参数调用 2. 关键词参数调用 原则: 关键词参数调用不能写在位置参数调用的前边 def test1(name, age):print("name:" ...

最新文章

  1. HDU 2080 夹角有多大II
  2. C++中自定义比较函数和重载运算符总结
  3. 微软Adam挑战Google Brain:我的机器学习比你快
  4. StreamBox Ripper 将rm转mp3时候出现g2支持的问题
  5. 抖音用户规模达5.18亿,数据解读抖音支付背后逻辑?
  6. 基础入门_Python-内建函数.运维开发中eval内建函数的最佳实践?
  7. 有效值和峰峰值的关系_4.数据预处理—缺失值处理(二)
  8. scrapy爬取多页面
  9. 快速从入门到精通!mysql删除语句姓李的语句
  10. Origin好友列表离线的解决办法汇总
  11. OpenWRT LEDE固件安装
  12. php开心农场 源码,开心农场源码(UCHome)PHP版下载
  13. excel显著性检验_使用Excel2016比较两组数据显著性差异
  14. 《Introducing the Child Process Debugging Power Tool》学习
  15. Cisco(64)——路由策略综合
  16. Github每日精选(第77期):Go (Golang) 编写的 HTTP Web 框架gin
  17. SQL——数据库使用规范(入门规范)
  18. C语言入门(初识C语言)
  19. 单条视频播放3700w+,生鲜产品如何开启变现之路?
  20. sendmail收邮件

热门文章

  1. 利用MAVEN打包可运行jar包,包括依赖的第三方包
  2. linux命令---查找文件中的内容
  3. MWC2015中的LTE软基站(转自GeeFlex)
  4. vagrant学习记录
  5. php引用计数的基本知识
  6. Scrapy 爬虫实例 抓取豆瓣小组信息并保存到mongodb中
  7. 手动安装oracle软件 删软件
  8. 《JAVA程序设计》第七周学习总结
  9. MySQL基本语句与数据类型
  10. ASP.NET MVC 导入Excel文件