前言

学过编程的人应该对全局变量与局部变量这两个名词并不陌生,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中全局变量和局部变量的理解与区别相关推荐

  1. python中全局变量和局部变量关键字_Python中都全局变量和局部变量

    Python中都全局变量和局部变量 Python中都全局变量和局部变量 定义 全局变量:函数体之外定义的变量 局部变量:函数体之内定义的变量 下述代码中,t是全局变量,m是局部变量 t = 1 def ...

  2. python中定义函数常用关键字_Python 中定义函数的关键字是 _________________ 。_学小易找答案...

    [其它]实验4-串和数组-实验任务书.docx [填空题]表达式 'abc' in ['abcdefg'] 的值为______________. [填空题]已知 x = range(1,4) 和 y ...

  3. python中函数定义的关键字_python中定义函数的关键字是什么

    函数代码块以def关键字开头,后接函数标识符名称和圆括号(),任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数,函数内容以冒号起始,并且缩进. 函数是组织好的,可重复使用的,用来实现 ...

  4. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  5. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  6. python中全局变量有缩进吗_python有全局变量吗

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

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

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

  8. python中导入模块是用哪个关键字_python中导入模块的关键字是什么_后端开发

    c语言中\t是什么意思_后端开发 C语言的[\t]代表的意思是水平制表符,相当于按了键盘上的TAB按键,通常宽度相当于8个空格的位置,但有些软件允许设置tab的宽度,在双引号或定界符表示的字符串中有效 ...

  9. python中匿名函数的关键字_Python匿名函数(lambda函数)

    匿名函数-- 一行函数 lambda -- 关键字 x是普通函数的形参(位置,关键字...)可以不接收参数(x可以不写) :x是普通函数的函数值(只能返回一个数据类型)(:x返回值必须写) 1)此函数 ...

最新文章

  1. 2019年度最全IT吃瓜指南
  2. 北斗定位2.0版来了!普通人手机可用,全免费!
  3. ProcessDialogKey 方法实现回车自动换行
  4. python标识符和关键字_Python标识符和关键字资料解析
  5. 百一测评java基础答案_百一测评——《Web应用开发》选择题(含参考答案)—JavaEE基础...
  6. 【select模块】select IO多路复用和select实现FTP
  7. php 扒取网页数据
  8. linux下查看大文件或者目录
  9. hadoop hive hbase 入门学习 (二)
  10. python多进程调试_使用pyrasite进行python进程调试,改变运行中进程的代码
  11. 清华大学计算机系研究生培养方案,清华大学计算机科学与技术系攻读硕士学位研究生培养方案...
  12. C语言找素数的几种方法
  13. 怎样将图片变成圆形?教你裁剪图片的方法
  14. tumblr_向您的Tumblr博客添加高级主题
  15. 通过网线实现两台PC相互通信(并实现访问公网)
  16. 怎么把多个excel内容汇总到一个excel里面
  17. 通向终极自由之路的圣多纳释放法
  18. 罗杰斯的创新扩散模型
  19. solr增量 dih deltaimport 入门
  20. 视频文件服务器加速,视频CDN,视频点播加速,视频点播CDN加速,CDN流媒体点播加速_速网云计算CDN服务商·卓越的互联网业务平台提供商...

热门文章

  1. 重磅:Elasticsearch上市!市值近50亿美元
  2. 从抖音关闭评论,看服务治理的重要性
  3. 阿里云Redis开发规范
  4. docs邮箱服务器,邮件服务器更换域名
  5. 用html CSS实现砸金蛋,css3+js 实现砸金蛋效果
  6. python 异常分类_python的异常处理
  7. bat 调用python
  8. android WebSocket 发送图片
  9. TensorFlow:将ckpt文件固化成pb文件
  10. jetson nano 人脸