• 售前

  • 售后

热门帖子
入门百科

Python中全局变量和局部变量的明白与区别

[复制链接]
尘埃384 显示全部楼层 发表于 2021-10-25 19:11:27 |阅读模式 打印 上一主题 下一主题
媒介
学过编程的人应该对全局变量与局部变量这两个名词并不陌生,Python也同多数编程语言一样,也有全局变量与局部变量的概念
但是与其他编程语言又有所不同
全局变量与局部变量两者的本质区别就是在于作用域
用普通的话来理解的话,
全局变量是在整个py文件中声明,全局范围内都可以访问
局部变量是在某个函数中声明的,只能在该函数中调用它,假如试图在超出范围的地方调用,程序就爆掉了
假如在函数内部界说与某个全局变量一样名称的局部变量,就大概会导致意外的效果,大概不是你期望的。因此不发起如许使用,如许会使得程序很不健全
直接来看几个例子来理解全局变量和局部变量的区别吧:
Demo1:
  1. def fun(x):
  2. y=2
  3. print("乘法的运行结果:",x*y)
  4. num1=1
  5. print("初始num1=",num1)
  6. fun(num1)
  7. print("y的值是:",y)
复制代码
运行结果:

报错的缘故原由是因为试图访问局部变量,但是访问的地方不在该变量y的作用域中
Demo2:
  1. def fun():
  2. num1=2
  3. print("函数内修改后num1=",num1)
  4. num1=1
  5. print("初始num1=",num1)
  6. fun()
  7. print("运行完函数后num1=",num1)
复制代码
运行结果:

可以看到在函数内部对全局变量的修改后,在函数实行完毕,修改的结果是无效的,全局变量并不会受到影响
再看:
Demo3:
  1. def fun():
  2. num1*=2
  3. print("函数内修改后num1=",num1)
  4. num1=1
  5. print("初始num1=",num1)
  6. fun()
  7. print("运行完函数后num1=",num1)
复制代码
运行结果:

报错了。这是因为在fun()函数使用了局部变量num1,它只是个跟全局变量同名的局部变量,使用前还是要赋值,因此再次夸大不要如许使用
global关键字
假如真的想要在函数体内修改全局变量的值,就要使用global关键字
Demo4:
  1. def fun():
  2. global num1
  3. num1=2
  4. print("函数内修改后num1=",num1)
  5. num1=1
  6. print("初始num1=",num1)
  7. fun()
  8. print("运行完函数后num1=",num1)
复制代码
运行结果:

使用global关键字就是告诉python编译器这个变量不是局部变量而是全局变量,实在有点像是"引用"的意思
nonlocal关键字
再看看另一个跟变量相干的关键字nonlocal,字面意思就是指当前的这个变量不是局部变量。nonlocal是Python3.0中新增的关键字,python2.x不支持
先来看看下面这段代码
  1. def fun():
  2. num2=3
  3. def fun2():
  4. num2*=2
  5. print("num2=",num2)
  6. return fun2()
  7. fun()
复制代码
运行结果:

错误的缘故原由跟前面的差不多,就是使用了未界说的局部变量,然而num2也不是全局变量,只是fun2函数的外层变量,强行使用global界说num2的话同样会报错(不信你试试)
这时候需要使用nonlocal关键字:
  1. def fun():
  2. num2=3
  3. def fun2():
  4. nonlocal num2
  5. num2*=2
  6. print("num2=",num2)
  7. return fun2()
  8. fun()
复制代码
运行结果:

云云,程序就能正常实行
总结
到此这篇关于Python中全局变量和局部变量的文章就先容到这了,更多相干Python全局变量和局部变量内容请搜索草根技术分享以前的文章或继续欣赏下面的相干文章盼望各人以后多多支持草根技术分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作