在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设置全局变量失败_Python全局变量与global关键字常见错误解决方案相关推荐

  1. python系统关键字_Python基础教程 - global关键字及全局变量的用法

    Python中global关键字主要作用是声明变量的作用域. 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a = 5; void t ...

  2. python中的global是什么意思_Python中的global关键字,你了解吗?

    前言 今天来了解下 Python 中的 global 关键字. Python变量的作用域 实战案例演示之前,先要了解下 Python 的作用域. 曾经在闭包的文章 <python小课堂26 - ...

  3. python中global什么意思_python中的global关键字的使用方法

    摘要 global 标志实际上是为了提示 python 解释器,表明被其修饰的变量是全局变量.这样解释器就可以从当前空间 (current scope) 中读写相应变量了. Python 的全局变量是 ...

  4. python nonlocal的用法_python中的global和nonlocal关键字怎么使用

    global 和 nonlocal关键字 当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了. 以下实例修改全局变量 num: #!/usr/bin/python3 ...

  5. python安装wheel失败_Python安装Pyinstaller失败,Preparing wheel metadata ... error

    python打包 Python安装Pyinstaller失败,Preparing wheel metadata ... error 解决办法 执行pyinstaller时报错:TypeError: a ...

  6. python设置环境变量_Python设置环境变量

    python设置环境变量 We can set an environment variable in Python using os module. Python os module environ ...

  7. python导入模块失败_Python导入模块时遇到的错误分析

    当遇到无法导入某个python模块时,可能会是没有安装某个模块,也有可能是某模块在加载过程中失败,也有可能是陷入了循环导入的问题.本文详细解释了这个问题. 1. 模块未安装或者路径不对 ImportE ...

  8. 三年的python开发经验,总结出这【30个常见错误】,避免重蹈覆辙!!!

    导读:在这篇文章中,我将总结新老Python程序员常犯的一些错误,以帮助你们在自己的工作避免犯同样或类似错误. 在这篇文章中,我将总结新老Python程序员常犯的一些错误,以帮助你们在自己的工作避免犯 ...

  9. 【linux】解决设置CentOS7虚拟机使用静态IP的常见错误解决方案

    最近在VMware虚拟机里玩Centos,装好后发现上不了网.经过一番艰辛的折腾,终于找到出解决问题的方法了.最终的效果是无论是ping内网IP还是ping外网ip,都能正常ping通.方法四步走: ...

最新文章

  1. 怎么一个好的短信验证码接口接入到自己的企业网站和APP程序当中选择
  2. php如何发起get网络请求,php发送get、post请求的几种方法
  3. python 代理ip验证_Python 快速验证代理IP是否有效,再也不用担心被封IP了!
  4. mysql concat键值对_MySQL中concat函数
  5. JavaEE PO VO BO DTO POJO DAO 整理总结
  6. 数据结构与算法-- 数组中出现次数超过一半的数字(时间复杂度的讨论)
  7. java 反射操作字段_x86上的Java最终字段没有操作?
  8. Java SE 第二十三讲----static关键字and final关键字
  9. 为全力发展AIOT,小米把松果电子分拆重组了
  10. iOS开发之创建颜色渐变视图View
  11. 转:开源数据库中间件MyCat实现数据库读写分离、分表分库指南
  12. 李华上大学了吗?(I)
  13. 国家信息安全漏洞库最新动态发布,墨云科技成为CNNVD技术支撑单位
  14. 夏普android4.4.2连u盘,即插即用 夏普复合机U盘直接打印教学
  15. 解决echarts的title和legend重合问题(转)
  16. 【图像处理算法常用数据集】整理第一弹
  17. 通过高德地图API(WEB端)获取中国所有省市(可扩展)的列表
  18. java计算机毕业设计郑工社团交流服务信息平台源码+mysql数据库+系统+lw文档+部署
  19. 世界第一台通用计算机:ENIAC
  20. 使用WinGate代理服务器使局域网连接到Internet

热门文章

  1. MOCTF-Web-Flag在哪?
  2. 使用vue-router的meta实现 设置每个页面的title标题
  3. Sequence Classification with LSTM Recurrent Neural Networks in Python with Keras-学习笔记
  4. java实验1_Java程序实验1
  5. Token的解密和加密
  6. OpenCV中IplImage/CvMat/Mat转化关系
  7. Lnmp搭建zabbix运维监控系统
  8. PostgreSQL 数组类型
  9. 闲谈“个人核心竞争力”与“危机感” !!!
  10. .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]...