Python全局变量与global关键字常见错误解决方案

 更新时间:2020年10月05日 09:39:49   作者:lincappu  
这篇文章主要介绍了Python全局变量与global关键字常见错误解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在Python的变量使用中,经常会遇到这样的错误:

local variable 'a' referenced before assignment

它的意思是:局部变量“a”在赋值前就被引用了。

比如运行下面的代码就会出现这样的问题:

a = 3
def Fuc():
print (a)
a = a + 1
Fuc()

​ 但是如果把 a = a + 1 这一句删除又不会出现上述问题了

a = 3
def Fuc():
print (a)
Fuc()

​ 原来,在Python中,a=3 定义了全局变量a,作用域从定义处到代码结束,在 a=3 以下的函数中是可以引用全局变量a的,但如果要修改函数中与全局变量同名的变量,则函数中的该变量就会变成局部变量,在修改之前对该变量的引用自然会出现未分配或未定义的错误了。

​ 如果确定要引用并修改全局变量必须加上global关键字

a = 3
def Fuc():
global a
print (a)
a=a+1
Fuc()

注意要领:哪个函数需要修改全局变量,在函数中声明一下即可。

​ 但是有一个函数特殊,那就是主函数:

a = 3
def Fuc():
global a
print (a) # 1
a = a + 1
if __name__ == "__main__":
print (a) # 2
a = a + 1
Fuc()
print (a) # 3

​输出如下(Python3环境下):

三个print执行的顺序为:2, 1, 3 。可以看到主函数中并没有global声明变量a,仍然可以修改全局变量a。而在普通函数中,需要global声明变量a,才可以修改全局变量a。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • python连接sql server数据库的方法实战

    python连接sql server数据库的方法实战

    当我们用Python来编写网站,必须要能够通过python操作数据库,下面这篇文章主要给大家介绍了关于python连接sql server数据库的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Python 多线程不加锁分块读取文件的方法

    Python 多线程不加锁分块读取文件的方法

    今天小编就为大家分享一篇Python 多线程不加锁分块读取文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 33个Python爬虫项目实战(推荐)

    33个Python爬虫项目实战(推荐)

    这篇文章主要介绍了33个Python爬虫项目实战,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-07-07
  • 中秋将至利用python画一些月饼从天而降不用买了

    中秋将至利用python画一些月饼从天而降不用买了

    中秋没两天就要到了,今天小编就利用python画个月饼的小游戏,文中内容非常详细,感兴趣的小伙伴一定要收藏起来送给远方的朋友呀
    2021-09-09
  • python使用gdal对shp读取,新建和更新的实例

    python使用gdal对shp读取,新建和更新的实例

    这篇文章主要介绍了python使用gdal对shp读取,新建和更新的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python+Pyecharts实现散点图的绘制

    Python+Pyecharts实现散点图的绘制

    散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。本文将利用Python Pyecharts实现散点图的绘制,需要的可以参考一下
    2022-06-06
  • Keras之fit_generator与train_on_batch用法

    Keras之fit_generator与train_on_batch用法

    这篇文章主要介绍了Keras之fit_generator与train_on_batch用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 基于python实现Pycharm断点调试

    基于python实现Pycharm断点调试

    这篇文章主要介绍了基于python实现Pycharm断点调试,在我们写程序的时候,很容易遇到各种各样的bug,然后编译器提示程序出错的地方。很多时候可以通过提示的信息修改程序,但是有时我们想得到更多的信息,这个时候就需要进行断点调试,下面我们就一起来学习ycharm断点调试
    2022-02-02
  • 学会Python数据可视化必须尝试这7个库

    学会Python数据可视化必须尝试这7个库

    数据可视化是使用一些绘图和图形更详细地理解数据的过程.最著名的库之一是 matplotlib,它可以绘制几乎所有您可以想象的绘图类型.matplotlib 唯一的问题是初学者很难掌握.在本文中,我将介绍七个数据可视化库,你可以尝试使用它们来代替 matplotlib ,需要的朋友可以参考下
    2021-06-06
  • python读取Android permission文件

    python读取Android permission文件

    python解析json文件读取Android permission,同时可以学习到json的知识。
    2013-11-11

最新评论