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


Posted in Python onOctober 05, 2020

在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爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
python从入门到精通(DAY 2)
Dec 20 Python
python中实现迭代器(iterator)的方法示例
Jan 19 Python
Python pygorithm模块用法示例【常见算法测试】
Aug 16 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
python给微信好友定时推送消息的示例
Feb 20 Python
python如何制作缩略图
Apr 30 Python
如何通过Python实现标签云算法
Jul 02 Python
Python何时应该使用Lambda函数
Jul 02 Python
Django--权限Permissions的例子
Aug 28 Python
解决pycharm上的jupyter notebook端口被占用问题
Dec 17 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 #Python
Python xmltodict模块安装及代码实例
Oct 05 #Python
Python pathlib模块使用方法及实例解析
Oct 05 #Python
Python fileinput模块如何逐行读取多个文件
Oct 05 #Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 #Python
Python中random模块常用方法的使用教程
Oct 04 #Python
python代数式括号有效性检验示例代码
Oct 04 #Python
You might like
js下函数般调用正则的方法附代码
2008/06/22 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
require.js中的define函数详解
2017/07/10 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
python的keyword模块用法实例分析
2015/06/30 Python
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
python变量的存储原理详解
2019/07/10 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
告诉你怎样写创业计划书
2014/01/27 职场文书
医药销售求职信范文
2014/02/01 职场文书
高一数学教学反思
2014/02/07 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
2015年共青团工作总结
2015/05/15 职场文书
导游词之永泰公主墓
2019/12/04 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫