热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python教程分享python修改全局变量可以不加global吗?

以如下代码为例,我们在局部作用域内使用全局变量a,需要使用global关键字进行声明。否则代码会不可用。a100deffun():  globala  a+100   fun()p

以如下代码为例,我们在局部作用域内使用全局变量a,需要使用global关键字进行声明。否则代码会不可用。

a = 100      def fun():      global a      a += 100        fun()  print(a)

python修改全局变量可以不加global吗?

但是也有一种常见的情况,

可以修改的数据类型在函数内部做修改操作是不需要声明global的:

list1 = [100, 200]      def fun():      list1.append(300)    fun()  print(list1)

python修改全局变量可以不加global吗?

但是如果把添加元素的命令换成列表拼接的方式:

list1 += list1 + [300]

则代码依然不可用,需要添加关键字global声明list1才可用。

进一步展开说:

list1 = [100, 200]  print(list1, id(list1))  list1 = list1 + [300]  print(list1, id(list1))  list1 += [400]  print(list1, id(list1))  list1.append(500)  print(list1, id(list1))

对于list1 = list1 + [300]
如图,list1 = list1 + [300]改变了list1的id,这意味着,得到的新的list1已经不是原来的list1变的,而是重新生成的,也可以理解成是重新赋值的list1,只是过程中利用了list1。该代码在局部作用域没有global不可用,因为在生成新的变量之前, list1 + [300] 中的list1是取不到的。

list1 += [400],list1.append(500)都不改变id,改变的是原变量list1。
但是list1 += [400]无global不可用,原因同上述情况一样;
list1.append(500)则无global也可用,符合 可用修改的数据类型在函数内部的修改操作不需声明global。

到此这篇关于python修改全局变量可以不加global吗?的文章就介绍到这了,更多相关python修改全局变量内容请搜索<编程笔记>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<编程笔记>!

需要了解更多python教程分享python修改全局变量可以不加global吗?,都可以关注python教程分享栏目&#8212;编程笔记


推荐阅读
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • Python教程分享:使用plt.text给图中的点加标签,让Python画图更生动
    背景:今天在用matplotlib模块画各城市2019-ncov疫情确诊人数和节前流入人口数的图的时候遇到了要给图中的点加上标签示意,原本图长这个样子现在要给各散点标注是哪个哪个城 ... [详细]
  • 这篇文章给大家分享的是有关python3怎样中文转换编码的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。示例:处理 ... [详细]
  • 浅谈Python3中打开文件的方式(With open)
    浅谈Python3中打开文件的方式(With open)-目录0.背景知识1.常规方式:读取文件-----open()2.推荐方式:读取文件-----WithOpen1).读取方式 ... [详细]
  • Python Flask学习之安装SQL,python3,Pycharm(网上下载安装即可)
    1,下载时更改pypi源。可以额外安装虚拟化环境:pipinstall-ihttp:pypi.douban.comsimple--trusted-hos ... [详细]
  • python教程分享python单例模式之selenium driver实现单例
    一、使用装饰器实现单例二、web自动化driver实现单例模式2.1编写单例模式的装饰器2.2driver使用装饰器,实现单例模式2.3获取driver的实例,就是单例了三、在自动 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 菜鸟教程python3在线编译器,python3在线编译当计算机运行代码时,它不是像我们阅读时那样被记忆,而是需要被翻译成计算机可以阅读的语言。这就是编译的过程。那么,有没有加快编 ... [详细]
  • 从一个例子看Python3.x中序列解包
    假如一个字符串ABCDEFGH,要输出下列格式:即:每次取出第一个作为首,然后的字符串拆成列表,放置在后面,最后成上面的输出:一般的处理是:>> ... [详细]
  • 一json文件JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使 ... [详细]
  • python教程分享cvtcolor函数的作用(cvtcolor函数出现未处理异常)
    在这篇文章中,我们将看到如何使用python中的opencv模块检测颜色,进入这个领域的第一步就是安装下面提到的模块。pipinstallopencv-pythonpipinsta ... [详细]
  • 写在前面最近在学习爬虫,在熟悉了Python语言和BeautifulSoup4后打算下个爬虫框架试试。没想到啊,这坑太深了。。。看了看相关介绍后选择了Scrapy框架,然后兴高采烈的 ... [详细]
author-avatar
wangxin7299b_943
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有