python全局变量在整个程序内都有效_Python 全局变量使用

python全局变量在整个程序内都有效_Python 全局变量使用在平时的开发中我们有时候会用到全局变量 但是很多开发语言不允许使用或者建议少使用全局变量 Python 也是如此 但是有时候为了编写程序的方便和灵活 必须使用全局变量 这篇文章记录是我在使用 Python 全局变量的一些体会 写的不是很好 欢迎大家指正 一 使用全局变量首先展示一段不能修改全局变量的代码 gl string helloPython 定义全局变量 gl stringprint i

在平时的开发中我们有时候会用到全局变量,但是很多开发语言不允许使用或者建议少使用全局变量,Python也是如此。但是有时候为了编写程序的方便和灵活,必须使用全局变量。这篇文章记录是我在使用Python全局变量的一些体会,写的不是很好,欢迎大家指正!

一,使用全局变量

首先展示一段不能修改全局变量的代码:

gl_string =”hello Python” # 定义全局变量gl_string

print(id(gl_string))# 打印全局变量gl_string的内存地址

print(gl_string)

print(“开始全局打印———“)

# 函数1

def demo1():

gl_string =”hello Objc”

print(id(gl_string))

print(gl_string)

print(“demo1打印———“)

# 函数2

def demo2():

gl_string =”hello Java”

print(id(gl_string))

print(gl_string)

print(“demo2打印———“)

demo1() # 调用

demo2() # 调用

# 最后打印全局变量的信息

print(id(gl_string))

print(gl_string)

print(“最后全局打印———“)

打印结果如下:

hello Python

开始全局打印———

hello Objc

demo1打印———

hello Java

demo2打印———

hello Python

最后全局打印———

从打印的结果发现,每次在函数里面给gl_string变量进行赋值操作时,gl_string变量的内存地址都不一样,而且gl_string对应的值也不一样。从开始到结束的打印结果来看,全局变量gl_string内存地址和对应的值都没有发生改变。依此可以得出这样的结果:当在函数里面不添加其他操作的情况下是无法修改全局变量的,函数里面的对全局变量的赋值操作实际上是系统帮我们创建了一个跟全局变量同名的局部变量

二,如何修改全局变量

还是先看一段代码:

# 定义全局变量num

gl_string = “hello Python”

# 打印全局变量num的内存地址

print(id(gl_string))

print(gl_string)

print(“开始全局打印———“)

def demo1():

global gl_string

gl_string = “hello Objc”

print(id(gl_string))

print(gl_string)

print(“demo1打印———“)

def demo2():

gl_string = “hello Java”

print(id(gl_string))

print(gl_string)

print(“demo2打印———“)

demo1()

demo2()

print(id(gl_string))

print(gl_string)

print(“最后全局打印———“)

上面这段代码跟之前的那端段代码有一点区别,现在的这份代码在demo1里面添加了这句代码global gl_string,下面看看输出结果:

hello Python

开始全局打印———

hello Objc

demo1打印———

hello Java

demo2打印———

hello Objc

最后全局打印———

从输出结果可以看到,demo1里面的打印结果和程序结束时打印结果是一致的,而程序开始的结果和demo2里面的结果不一样。

我们现在demo2里面加一行代码再看看输出结果:

# 定义全局变量num

gl_string = “hello Python”

# 打印全局变量num的内存地址

print(id(gl_string))

print(gl_string)

print(“开始全局打印———“)

def demo1():

global gl_string

gl_string = “hello Objc”

print(id(gl_string))

print(gl_string)

print(“demo1打印———“)

def demo2():

global gl_string

gl_string = “hello Java”

print(id(gl_string))

print(gl_string)

print(“demo2打印———“)

demo1()

demo2()

print(id(gl_string))

print(gl_string)

print(“最后全局打印———“)

输出结果:

hello Python

开始全局打印———

hello Objc

demo1打印———

hello Java

demo2打印———

hello Java

最后全局打印———

从这次的输出结果可以看出,demo2和程序结束时打印的结果是一样的,而开始的打印结果和demo1里面的打印结果不一样。

从以上三段代码的打印结果最后的出如下的结论,在函数内部使用全局变量时,如果不添加global关键字修饰全局变量,那么我们在函数里面对全局变量的赋值操作实际上并不是对全局变量的赋值,而是创建了一个跟全局变量同名的局部变量。如果用global关键字修饰以后的全局变量,在函数内进行赋值操作时确实修改了全局函数的值,但这个也只是一个假象而已,因为在每次赋值时,全局变量的内存地址都在改变,系统只是将变量标识符指向了最新的内存地址而已,并不是在原来的内存地址是修改。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233225.html原文链接:https://javaforall.net

(0)
上一篇 2025年8月6日 上午8:01
下一篇 2025年8月6日 上午8:22


相关推荐

  • Claude Code + Kimi K2 小白教程

    Claude Code + Kimi K2 小白教程

    2026年3月16日
    1
  • Pytest(1)安装与入门「建议收藏」

    Pytest(1)安装与入门「建议收藏」pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它

    2022年7月31日
    7
  • 大疆网上测评题库_【大疆在线测试有几套题啊?】-看准网

    大疆网上测评题库_【大疆在线测试有几套题啊?】-看准网写面经,攒人品。大疆服务运营培训生。1.大疆网上笔试题(比较独创,很有趣,也有歇跟大疆相关的题,要比较熟悉大疆),笔试过后,有岗位笔试作业。2.大疆服务运营培训生笔试作业题目。三道大题,开放性题目,专业和岗位相关,涉及报告类题目。规定期限内提交,审核,通过后进入面试环节。3.一面,微信视频面试。提前约定时间,到点准时打来,直奔主题。自我介绍,针对个人经历开始提问,最后会用英文简单问答一下看英语能力…

    2022年6月18日
    68
  • Informatica ETL开发入门实例

    Informatica ETL开发入门实例Informatica客户端工具:5个Designer——定义源及目标结构设计转换规则,生成ETL映射RepositoryManager——元数据资料库,依赖性分析,安全性管理等RepositoryServerAdministratorConsole——Repository的建立与维护WorkflowManager——合理的实现复杂的ETL工作流基于时间或事件的作业高度WorkflowMonitor——监控workflow和session,生成工作日志及报告…

    2022年6月11日
    38
  • “养龙虾”狂潮来了:一款开源AI如何搅动资本、产业与政策

    “养龙虾”狂潮来了:一款开源AI如何搅动资本、产业与政策

    2026年3月12日
    2
  • IT项目团队管理

    IT项目团队管理漫谈IT项目团队管理心得如果在软件项目实施中选出最难解决的几个问题,那么管理问题一定名列前茅。在管理问题中,团队管理又是其中的难点。一个项目管理的好坏,很大程度就体现在团队的建设和管理上。团队管理涉及到管理学、心理学和哲学等诸多方面内容,具体实施起来还容易产生许多误区,因此,对项目主管的综合素质要求颇高。笔者进入项目管理领域的时间尚短,最近读了一些书籍,结合自己的一些经验,汇成一些心得体会,愿…

    2022年6月11日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号