global 和 nonlocal关键字
当内部作用域想修改外部作用域的变量时,就要用到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关键字相关推荐
- python nonlocal的用法_python中的global和nonlocal关键字怎么使用
global 和 nonlocal关键字 当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了. 以下实例修改全局变量 num: #!/usr/bin/python3 ...
- python local global_python global与nonlocal关键字
函数作用域 a = 1 print("函数outer调用之前全局变量a的内存地址: ", a , id(a)) def outer(): a = 2 print("函数o ...
- python global和nonlocal_3.关于作用域知识的额外补充global和nonlocal关键字
本遍文章对global关键字和nonlocal关键字进行补充,这两个关键字在以后做python开发的时候,能不用尽量别用!最好别用!总会出现让你意想不到的后果... 1.先说第一种global,不管在 ...
- global与nonlocal关键字
在Python中,当引用一个变量的时候,对这个变量的搜索是按找本地作用域(Local).嵌套作用域(Enclosing function locals).全局作用域(Global).内置作用域(bui ...
- 滚雪球学 Python 之作用域下的 global 和 nonlocal 关键字
橡皮擦,一个逗趣的互联网高级网虫,新的系列,让我们一起 Be More Pythonic. 滚雪球学 Python 第二轮 已完成的文章清单 十.global 和 nonlocal 作用域 10.1 ...
- nonlocal python3_Python中的global和nonlocal关键字
在进入正题之前先简单说明一下:局部变量:函数或者方法里面定义的变量: 全局变量:本文指module级别的变量(一个python文件就是一个module). global 先看个例子:a = 1 def ...
- [转载] python不允许使用关键字_Python中关键字global与nonlocal的区别
参考链接: Python全局关键字 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xCyansun/article/details/79672634 ...
- Python中关键字global与nonlocal的区别
终于下定决心学习Python了.既然从头开始,就需要认认真真. 首先需要说的是,我是初学Python,这篇文章只是用于展示global和nonlocal关键字的区别,是很简单的知识点,如果你已经学过, ...
- python3_函数_形参调用方式 / 不定长参数 / 函数返回值 / 变量作用域 / 匿名函数 / 递归调用 / 函数式编程 / 高阶函数 / gobal和nonlocal关键字 / 内置函数
1.形参的调用方式 1. 位置参数调用 2. 关键词参数调用 原则: 关键词参数调用不能写在位置参数调用的前边 def test1(name, age):print("name:" ...
最新文章
- HDU 2080 夹角有多大II
- C++中自定义比较函数和重载运算符总结
- 微软Adam挑战Google Brain:我的机器学习比你快
- StreamBox Ripper 将rm转mp3时候出现g2支持的问题
- 抖音用户规模达5.18亿,数据解读抖音支付背后逻辑?
- 基础入门_Python-内建函数.运维开发中eval内建函数的最佳实践?
- 有效值和峰峰值的关系_4.数据预处理—缺失值处理(二)
- scrapy爬取多页面
- 快速从入门到精通!mysql删除语句姓李的语句
- Origin好友列表离线的解决办法汇总
- OpenWRT LEDE固件安装
- php开心农场 源码,开心农场源码(UCHome)PHP版下载
- excel显著性检验_使用Excel2016比较两组数据显著性差异
- 《Introducing the Child Process Debugging Power Tool》学习
- Cisco(64)——路由策略综合
- Github每日精选(第77期):Go (Golang) 编写的 HTTP Web 框架gin
- SQL——数据库使用规范(入门规范)
- C语言入门(初识C语言)
- 单条视频播放3700w+,生鲜产品如何开启变现之路?
- sendmail收邮件