Python函数定义变量报错:local variable ‘a‘ referenced before assignment
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 aprint (a)a=a+1
Fuc()
注意要领:哪个函数需要修改全局变量,在函数中声明一下即可。
但在 if _name_ == “main”:下,全局变量是一直保持的
a = 3
def Fuc():global aprint (a) # 1a = a + 1
if __name__ == "__main__":print (a) # 2a = a + 1Fuc()print (a) # 3
输出如下(Python3环境下):
3
4
5
三个print执行的顺序为:2, 1, 3 。
Python函数定义变量报错:local variable ‘a‘ referenced before assignment相关推荐
- local variable xxx referenced before assignment
在python中有一个经典错误: local variable xxx referenced before assignment#赋值前引用的局部变量xxx 这里引入两个概念: 局部变量指的在函数内部 ...
- local variable 'xxx' referenced before assignment
local variable 'xxx' referenced before assignment 定义了一个全局变量 createTableFlag ,Python的一个函数里面引用这个变量,并改变 ...
- UnboundLocalError: local variable ‘a‘ referenced before assignment(Python报错解决)
问题提出 使用Python编程的时候,要注意函数内可以访问全局变量,但不能更新(修改)其值. 比如: a = 10 def sum ( n ) :n += aprint ('a = ', a, end ...
- local variable 'sum_size' referenced before assignment报错
统计一个目录的大小 import os sum_size=0 #这里sum_size是全局变量,如果需要在函数里调用需要声明global sum_size def dir_size(dir1): gl ...
- Python问题:UnboundLocalError: local variable 'xxx' referenced before assignment
UnboundLocalError: local variable 'xxx' referenced before assignment 原因分析:函数使用时,没有定义. 解决方法:查看报错的变量是否 ...
- Python 解决 local variable ‘xxx‘ referenced before assignment
解决 local variable 'xxx' referenced before assignment 在刷leetcode的时候,定义全局变量后在函数中调用总是会出现这个错误,一直没搞明白,现在记 ...
- python的UnboundLocalError: local variable 'xxx' referenced before assignment
From: http://blog.sina.com.cn/s/blog_8d3652760101d01p.html 一.意思: 本地变量xxx引用前没定义. 二.错误原因 在于python没有变量的 ...
- python 错误--UnboundLocalError: local variable 'num' referenced before assignment
val = 9 def test(flag): if flag: val = 1 else: print("test") return val if __name__ == '__ ...
- python local variable 'xxx' referenced before assignment
python local variable 'xxx' referenced before assignment 代码 1 # -*- coding:utf-8 -*- 2 import sys 3 ...
最新文章
- 大闸蟹的OO第二单元总结
- python 正则表达式 截取特定字符串之后的全部内容
- 关于PHP Session 的配置与启动问题解决
- 配置学习Go的编辑器:配置TextMate
- jquery的全选,全不选,反选
- 【转】GLSL资料收集
- 第一章 初始MySQL
- callback用法 js vue_Vue前端开发——使用高德地图WebApi
- 【java】打印一个对象即打印出该对象toString()返回值
- 毕设题目:Matlab电子琴
- HDU 3072 (强连通分量)
- Android逆向不可不知的smali语言
- 2.2基本共射放大电路的工作原理
- (原创)AD账户误删导致Exchange邮箱被删 莫苦恼
- python 绘制三国演义人物关系图
- openCV生成一张纯白图片
- java 求次方_Java递归例子——求x的y幂次方
- 从一个技术人员角度来谈谈10000小时定律
- [渝粤教育] 石家庄铁道大学 理论力学 参考 资料
- UPlayer播放器问题相关