Python global全局变量函数详解

 更新时间:2018年09月18日 14:35:15   作者:brucewong0516  
本文详解了global全局变量函数的用法,还有global的作用。global全局变量在一个脚本中全部作用域都可以访问,用法很方便,希望本文对大家有所帮助

global语句的作用

在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是全局变量。此时用global语句就可以变成这个任务,也就是说没有用global语句的情况下,是不能修改全局变量的。

在python的函数使用时,经常会碰到参数定义的问题。如果不声明全局变量,会报错

count = 1
def cc():
 count = count+1
cc()
Traceback (most recent call last):
File "<ipython-input-17-f6b58c567c1a>", line 1, in <module>
 cc()
File "<ipython-input-16-aab94f1185b9>", line 2, in cc
 count = count+1
UnboundLocalError: local variable 'count' referenced before assignment

意思是说count为局部变量,在使用它之前没有被赋值。在函数内无法直接使用全局变量。

num = 1
id(num)
Out[31]: 1886744032
def cc():
 num = 2
 print(id(num))
 print(num)
cc()
1886744064
2

可以看出函数里面的num是局部变量,有什么办法能在函数内使用全局变量呢?根据官方文档,可以用global语句:

1.The global statement is a declaration which holds for the entire current code block. It means that the
2.listed identifiers are to be interpreted as globals. It would be impossible to assign to a global variable without global.

意思是说global语句可以声明一个或多个变量为全局变量。该声明仅在当前代码块中有效。除此之外,没办法访问全局变量。所以在函数中添加global声明:

def cc():
 global count
 count = count+1
 print(count)
cc()
2

用global声明多个变量需要用逗号分隔:

num = 0
def cc():
 global count,num
 count = count+1
 num = num+2
 print(count,num)
cc()
3 2
# 可以函数中的global声明能够修改全局变量
num
Out[24]: 2
# 
count
Out[25]: 3
在使用全局变量的场合,也可用类变量代替
class C:
 count = 3
def cc():
 count = C.count+1
 print(count)
cc()
4

如果是想在函数中调用全局变量,这需要global声明。之后调用全局变量,全局变量的值也随之可能发生改变,如果是count = count+1这种再定义的时候,否则全局变量只是被调用。也可以通过class来调用变量的方法达到全局变量的效果

global的作用就相当于传递参数,在函数外部声明的变量,如果在函数内想要使用,就用global来声明该变量,这样就相当于把该变量传递进来了,就可以引用该变量了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • Django 实现对已存在的model进行更改

    Django 实现对已存在的model进行更改

    这篇文章主要介绍了Django 实现对已存在的model进行更改,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python如何实现SSH远程连接与文件传输

    Python如何实现SSH远程连接与文件传输

    这篇文章主要介绍了Python如何实现SSH远程连接与文件传输问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Python变量的作用域使用

    Python变量的作用域使用

    这篇文章主要介绍了Python变量的作用域使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python在不同目录下导入模块的实现方法

    Python在不同目录下导入模块的实现方法

    下面小编就为大家带来一篇Python在不同目录下导入模块的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 如何使用python提取字符串的中英文(正则判断)

    如何使用python提取字符串的中英文(正则判断)

    这篇文章主要给大家介绍了关于如何使用python提取字符串中英文的相关资料,主要通过正则re中的sub函数、findall函数以及compile函数判断来实现,需要的朋友可以参考下
    2021-05-05
  • 深入理解Python变量的数据类型和存储

    深入理解Python变量的数据类型和存储

    这篇文章主要介绍了Python变量的数据类型和存储,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Python正则抓取新闻标题和链接的方法示例

    Python正则抓取新闻标题和链接的方法示例

    这篇文章主要介绍了Python正则抓取新闻标题和链接的方法,结合具体实例形式分析了Python正则匹配页面元素及文件写入相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • python爬虫实战之最简单的网页爬虫教程

    python爬虫实战之最简单的网页爬虫教程

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。下面这篇文章就来给大家介绍了关于利用python实现最简单的网页爬虫的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • python中pip安装库时出现Read timed out解决办法

    python中pip安装库时出现Read timed out解决办法

    最近需要使用pip库,安装的时候出现问题,本文就详细的介绍一下python中pip安装库时出现Read timed out解决办法,具有一定的参考价值,感兴趣的可以了解一下
    2022-03-03
  • C# DataGridView行列转换的具体实现

    C# DataGridView行列转换的具体实现

    本文主要介绍了C# DataGridView行列转换的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论