python中全局变量和局部变量关键字_Python中全局变量和局部变量的理解与区别
前言
学过编程的人应该对全局变量与局部变量这两个名词并不陌生,Python也同多数编程语言一样,也有全局变量与局部变量的概念
但是与其他编程语言又有所不同
全局变量与局部变量两者的本质区别就是在于作用域
用通俗的话来理解的话,
全局变量是在整个py文件中声明,全局范围内都可以访问
局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就爆掉了
如果在函数内部定义与某个全局变量一样名称的局部变量,就可能会导致意外的效果,可能不是你期望的。因此不建议这样使用,这样会使得程序很不健全
直接来看几个例子来理解全局变量和局部变量的区别吧:
Demo1:
def fun(x):
y=2
print("乘法的运行结果:",x*y)
num1=1
print("初始num1=",num1)
fun(num1)
print("y的值是:",y)
运行结果:
报错的原因是因为试图访问局部变量,但是访问的地方不在该变量y的作用域中
Demo2:
def fun():
num1=2
print("函数内修改后num1=",num1)
num1=1
print("初始num1=",num1)
fun()
print("运行完函数后num1=",num1)
运行结果:
可以看到在函数内部对全局变量的修改后,在函数执行完毕,修改的结果是无效的,全局变量并不会受到影响
再看:
Demo3:
def fun():
num1*=2
print("函数内修改后num1=",num1)
num1=1
print("初始num1=",num1)
fun()
print("运行完函数后num1=",num1)
运行结果:
报错了。这是因为在fun()函数使用了局部变量num1,它只是个跟全局变量同名的局部变量,使用前还是要赋值,因此再次强调不要这样使用
global关键字
如果真的想要在函数体内修改全局变量的值,就要使用global关键字
Demo4:
def fun():
global num1
num1=2
print("函数内修改后num1=",num1)
num1=1
print("初始num1=",num1)
fun()
print("运行完函数后num1=",num1)
运行结果:
使用global关键字就是告诉python编译器这个变量不是局部变量而是全局变量,其实有点像是"引用"的意思
nonlocal关键字
再看看另一个跟变量相关的关键字nonlocal,字面意思就是指当前的这个变量不是局部变量。nonlocal是Python3.0中新增的关键字,python2.x不支持
先来看看下面这段代码
def fun():
num2=3
def fun2():
num2*=2
print("num2=",num2)
return fun2()
fun()
运行结果:
错误的原因跟前面的差不多,就是使用了未定义的局部变量,然而num2也不是全局变量,只是fun2函数的外层变量,强行使用global定义num2的话同样会报错(不信你试试)
这时候需要使用nonlocal关键字:
def fun():
num2=3
def fun2():
nonlocal num2
num2*=2
print("num2=",num2)
return fun2()
fun()
运行结果:
如此,程序就能正常执行
总结
到此这篇关于Python中全局变量和局部变量的文章就介绍到这了,更多相关Python全局变量和局部变量内容请搜索179885.Com以前的文章或继续浏览下面的相关文章希望大家以后多多支持179885.Com!
python中全局变量和局部变量关键字_Python中全局变量和局部变量的理解与区别相关推荐
- python中全局变量和局部变量关键字_Python中都全局变量和局部变量
Python中都全局变量和局部变量 Python中都全局变量和局部变量 定义 全局变量:函数体之外定义的变量 局部变量:函数体之内定义的变量 下述代码中,t是全局变量,m是局部变量 t = 1 def ...
- python中定义函数常用关键字_Python 中定义函数的关键字是 _________________ 。_学小易找答案...
[其它]实验4-串和数组-实验任务书.docx [填空题]表达式 'abc' in ['abcdefg'] 的值为______________. [填空题]已知 x = range(1,4) 和 y ...
- python中函数定义的关键字_python中定义函数的关键字是什么
函数代码块以def关键字开头,后接函数标识符名称和圆括号(),任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数,函数内容以冒号起始,并且缩进. 函数是组织好的,可重复使用的,用来实现 ...
- Python基础_第3章_Python中的循环结构
Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...
- Python基础_第5章_Python中的数据序列
Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...
- python中全局变量有缩进吗_python有全局变量吗
Python 全局变量与global关键字 在Python的变量使用中,经常会遇到这样的错误:local variable 'a' referenced before assignment 它的意思是 ...
- [转载] python不允许使用关键字_Python中关键字global与nonlocal的区别
参考链接: Python全局关键字 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xCyansun/article/details/79672634 ...
- python中导入模块是用哪个关键字_python中导入模块的关键字是什么_后端开发
c语言中\t是什么意思_后端开发 C语言的[\t]代表的意思是水平制表符,相当于按了键盘上的TAB按键,通常宽度相当于8个空格的位置,但有些软件允许设置tab的宽度,在双引号或定界符表示的字符串中有效 ...
- python中匿名函数的关键字_Python匿名函数(lambda函数)
匿名函数-- 一行函数 lambda -- 关键字 x是普通函数的形参(位置,关键字...)可以不接收参数(x可以不写) :x是普通函数的函数值(只能返回一个数据类型)(:x返回值必须写) 1)此函数 ...
最新文章
- 2019年度最全IT吃瓜指南
- 北斗定位2.0版来了!普通人手机可用,全免费!
- ProcessDialogKey 方法实现回车自动换行
- python标识符和关键字_Python标识符和关键字资料解析
- 百一测评java基础答案_百一测评——《Web应用开发》选择题(含参考答案)—JavaEE基础...
- 【select模块】select IO多路复用和select实现FTP
- php 扒取网页数据
- linux下查看大文件或者目录
- hadoop hive hbase 入门学习 (二)
- python多进程调试_使用pyrasite进行python进程调试,改变运行中进程的代码
- 清华大学计算机系研究生培养方案,清华大学计算机科学与技术系攻读硕士学位研究生培养方案...
- C语言找素数的几种方法
- 怎样将图片变成圆形?教你裁剪图片的方法
- tumblr_向您的Tumblr博客添加高级主题
- 通过网线实现两台PC相互通信(并实现访问公网)
- 怎么把多个excel内容汇总到一个excel里面
- 通向终极自由之路的圣多纳释放法
- 罗杰斯的创新扩散模型
- solr增量 dih deltaimport 入门
- 视频文件服务器加速,视频CDN,视频点播加速,视频点播CDN加速,CDN流媒体点播加速_速网云计算CDN服务商·卓越的互联网业务平台提供商...