Python精通-Python局部变量与全局变量的区别
导语
在子程序定义的变量被称为是局部变量,在程序一开始定义的变量被称为是全局变量。全局变量的作用域是整个程序的生命周期,而局部变量的作用域知识在其定义的范围内可以使用。当全局变量与局部变量出现重名的时候,在局部变量的范围内是局部变量起作用,而在其他地方使用会是全局变量起作用。
文章目录
- 全局变量和局部变量
- 全局变量
- global 关键字
- 局部变量
- 局部变量和全局变量的使用
- 变量之间的关系
- 规范
- 补充内容
- 总结
全局变量和局部变量
全局变量
全局变量被定义之后,在整个代码中都可以使用到如下
name = "nihui"def chang_name():name = 'test'print('chang_name',name)chang_name();
print(name)
在定义全局变量与局部变量重名的时候,局部变量使用局部变量传入的值,而回到全局之后使用的还是全局变量的值。
global 关键字
使用了global关键字,相当于在局部变量中直接使用了全局变量。在内存中不会开辟新的空间,直接使用全局变量。
name = "nihui"# def chang_name():
# name = 'test'
# print('chang_name',name)def chang_name():global namename = "我真帅"print("我的长相",name)
chang_name();
print(name)
下面就来看一下Global关键字如何使用
局部变量
NAME = "admin"def admin():NAME = "nihui"print(NAME)def test():NAME = "user"print(NAME)admin()
test()
从上面的代码输入结果可以看出
nihui
user
局部变量和全局变量的使用
在Python执行的时候会先进行编译,也就是在运行之前先执行编译,但是在编译的时候两个方法中的内容并没有被执行,但是在具体调用方法的时候进行执行。下面来看一下如下的代码。
NAME = "admin"def admin():# NAME = "nihui"global NAMEprint(NAME)def test():NAME = "user"print(NAME)admin()
test()
NAME = "admin"def admin():# NAME = "nihui"global NAMENAME = "lisi"print(NAME)def test():NAME = "user"print(NAME)admin()
test()
NAME = "admin"def admin():# NAME = "nihui"global NAMENAME = "lisi"print(NAME)def test():# NAME = "user"print(NAME)admin()
test()
NAME = "admin"def admin():# NAME = "nihui"global NAMENAME = "lisi"print(NAME)def test():# NAME = "user"print(NAME)test()
admin()
上面几个例子中可以看出,不同的代码执行顺序会有不同的结果,为什么会有这样的效果呢?这就是因为global关键字的影响,它不会创建新的变量,如果在使用的时候进行了更新操作,它并不会产生新的变量。而是将整个的全局变量改变了。
变量之间的关系
如果函数的内部五global关键字,只能读取全局变量,无法重新赋值。如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值。通过下面两个例子可以证明一下上面这个结论。
NAME = ["admin","zhangsan"]
def admin():# NAME = "nihui"global NAMENAME = "lisi"print(NAME)def test():NAME = "user"print(NAME)
admin()
test()
NAME = ["admin","zhangsan"]def admin():# NAME = "nihui"NAME = "lisi"print(NAME)def test():# NAME = "user"print(NAME)admin()
test()
注意
从上面的结果中可以看到如果是个列表也是满足上面结论的。但是如果出现如下的这种操作。也就是说遇到可变对象的时候可以对其内部元素进行操作。
NAME = ["admin","zhangsan"]def admin():# NAME = "nihui"NAME = "lisi"print(NAME)def test():# NAME = "user"NAME.append("wangwu")print(NAME)admin()
test()
规范
全局变量全部大写,局部变量全部小写。
补充内容
NAME = "admin"def nihui():name = "nihui"print(name)def test():name = "test"print(name)def user():name = "user"print(name)print(name)user()test()print(name)
nihui()
name = "nihui"def admin():name = '沉着'def test():global namename = "冷静"test()print(name)
print(name)
admin()
print(name)
总结
上面内容简单的描述了全局变量和局部变量的使用,以及关键字global的用法,主要记住一句话,全局变量用大写,局部变量用小写。
Python精通-Python局部变量与全局变量的区别相关推荐
- 静态局部变量和全局变量的区别!
静态局部变量和全局变量的区别! C++变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域. 1.从作用域看: (1)全局变 ...
- 、简述global关键字的作用_二十三、Python变量作用域(局部变量和全局变量)
变量的作用域 在Python中,变量的作用域指的是变量起作用的范围,不同的作用域内,虽然变量的名字相同,但是它们互不影响.变量按照作用域范围可分为局部变量和全局变量. 全局变量 全局变量是在函数定义和 ...
- Python精通-Python学习路线详细介绍
导语 自从上次说完Python学习路线之后就再也没有更新过关于Python的东西,那么从这篇博客开始将对整个的Python技术栈开启以场全面的旅途,更其他系列一样,博主会不定期的更新关于Pytho ...
- php局部变量和全局变量的区别,PHP局部变量、静态变量、全局变量和超全局变量的使用和区别...
首先,PHP 中从变量的范围上可以分为 4 类,分别是静态变量.局部变量.全局变量和超全局变量. PHP 局部变量与全局变量 在 PHP 中中全局变量和局部变量的定义是和 C 语言类似的.在函数外定义 ...
- Python入门:局部变量与全局变量2
例子1: names=("Lili","Rain","Jack") change_name(name): names[0]="Li ...
- Python精通-Python集合操作详解
导语 在前面的分享中说完了基本的数据类型,基本的数据类型有六种分别是数字.字符串.列表.元组.列表.以及布尔值.接下来说的就是在Python中比基本数据类型变量等知识更加深入的数据类型叫做集合 文 ...
- Python精通-Python列表操作
导语 在之前的关于Python的分享中对于基本数据类型中字符串.布尔值等做了详细的分享.接下来的内容就是在Python中的另一个比较重要的基本数据类型列表,关于列表在之前对于字符串进行切分的时候简 ...
- Python精通-Python入门基础
导语 入坑Python系列开始了 文章目录 Python入门程序 Python程序运行方式 Python代码分析 执行一个操作内容 变量 条件语句 基本数据类型 字符串 数字 基本运算 加法 减法 ...
- Python精通-Python函数使用
导语 在编程意义上的函数其实是指完成某种操作的代码块,当然这个是个人的理解,但是这个概念在所有的编程语言中都是通用的.这个代码块用来完成某写特定的操作.但是在数学上的函数却是表示某种对应关系,这两 ...
最新文章
- golang异步协程调度原理
- su 与 sudo 区别
- JQUERY 常用方法汇总
- ping发送超大数据包(高级用法)
- list java removeif_java – removeIf()方法.从List中删除所有元素
- atlas安装需要kafka吗_Atlas 2.1.0 实践(2)—— 安装Atlas
- MySQL对于有大量重复数据表的处理方法
- Docker Java程序镜像制作
- 反射进行.newInstance()方法,报错Caused by: java.lang.NoSuchMethodException:XXXX.<init>()
- 详细关闭iiop方法_安卓手机卡顿清理垃圾是没用的,教你关闭几个设置,告别手机迟钝...
- 100大产业链全景图(2020版)及智能制造50大产业链
- 暑假集训后的一些感想
- android 第三方SDK接入一般流程
- jquery 国际短信区号 鼠标移上实现下拉选择
- 语音唤醒真香警告,轻松开启与Siri、小度和小爱的畅聊
- 真的有这么丝滑:3D头发建模新方法NeuralHDHair,浙大、ETH Zurich、CityU联合出品...
- 基于ZigBee+ESP32+MQTT+EMQX+TomCat+Servlet接口+MySQL+安卓app的物联网课设
- python携程酒店评论_python爬取携程景点评论信息
- 22考研基础阶段计划;超七成考研人已开始复习!
- 001、JDK环境配置
热门文章
- win10用计算机分区,新电脑win10怎样给系统硬盘分区?给新win10电脑分区硬盘的方法...
- matlab 03d,randomforest-matlab 一个 实现 的源代码,里面有使用说明和范例 Data Mining 数据挖掘 242万源代码下载- www.pudn.com...
- linux 减小根分区大小_减小linux下根分区
- python清除输出内容_jupyter notebook清除输出方式
- bootstrap和圣杯布局
- 64.判断当前线程是否是主线程
- android 关于listview scrollview 底部 控件无法显示的两个解决方案
- Spring -Bean的作用域
- 皕杰报表和炎黄盈动(AWS BPM)集成 操作手册
- 脚本语言(确认补遗)