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相关推荐

  1. local variable xxx referenced before assignment

    在python中有一个经典错误: local variable xxx referenced before assignment#赋值前引用的局部变量xxx 这里引入两个概念: 局部变量指的在函数内部 ...

  2. local variable 'xxx' referenced before assignment

    local variable 'xxx' referenced before assignment 定义了一个全局变量 createTableFlag ,Python的一个函数里面引用这个变量,并改变 ...

  3. UnboundLocalError: local variable ‘a‘ referenced before assignment(Python报错解决)

    问题提出 使用Python编程的时候,要注意函数内可以访问全局变量,但不能更新(修改)其值. 比如: a = 10 def sum ( n ) :n += aprint ('a = ', a, end ...

  4. local variable 'sum_size' referenced before assignment报错

    统计一个目录的大小 import os sum_size=0 #这里sum_size是全局变量,如果需要在函数里调用需要声明global sum_size def dir_size(dir1): gl ...

  5. Python问题:UnboundLocalError: local variable 'xxx' referenced before assignment

    UnboundLocalError: local variable 'xxx' referenced before assignment 原因分析:函数使用时,没有定义. 解决方法:查看报错的变量是否 ...

  6. Python 解决 local variable ‘xxx‘ referenced before assignment

    解决 local variable 'xxx' referenced before assignment 在刷leetcode的时候,定义全局变量后在函数中调用总是会出现这个错误,一直没搞明白,现在记 ...

  7. python的UnboundLocalError: local variable 'xxx' referenced before assignment

    From: http://blog.sina.com.cn/s/blog_8d3652760101d01p.html 一.意思: 本地变量xxx引用前没定义. 二.错误原因 在于python没有变量的 ...

  8. python 错误--UnboundLocalError: local variable 'num' referenced before assignment

    val = 9 def test(flag): if flag: val = 1 else: print("test") return val if __name__ == '__ ...

  9. python local variable 'xxx' referenced before assignment

    python local variable 'xxx' referenced before assignment 代码 1 # -*- coding:utf-8 -*- 2  import sys 3 ...

最新文章

  1. 大闸蟹的OO第二单元总结
  2. python 正则表达式 截取特定字符串之后的全部内容
  3. 关于PHP Session 的配置与启动问题解决
  4. 配置学习Go的编辑器:配置TextMate
  5. jquery的全选,全不选,反选
  6. 【转】GLSL资料收集
  7. 第一章 初始MySQL
  8. callback用法 js vue_Vue前端开发——使用高德地图WebApi
  9. 【java】打印一个对象即打印出该对象toString()返回值
  10. 毕设题目:Matlab电子琴
  11. HDU 3072 (强连通分量)
  12. Android逆向不可不知的smali语言
  13. 2.2基本共射放大电路的工作原理
  14. (原创)AD账户误删导致Exchange邮箱被删 莫苦恼
  15. python 绘制三国演义人物关系图
  16. openCV生成一张纯白图片
  17. java 求次方_Java递归例子——求x的y幂次方
  18. 从一个技术人员角度来谈谈10000小时定律
  19. [渝粤教育] 石家庄铁道大学 理论力学 参考 资料
  20. UPlayer播放器问题相关

热门文章

  1. 洛谷 P1372 又是毕业季I
  2. 用Emit技术替代反射
  3. (转) Twisted :第十九部分 改变之前的想法
  4. Intent, Bundle, ListView的简单使用
  5. 使用网络进行项目托管
  6. 业务单号自动增长的处理办法
  7. 基于Zookeeper使用ZkClient实现分布式锁
  8. Flume实战监听网络端口
  9. python支持复数类型以下什么说法是错误的,【Python】专项练习题(1)
  10. go 写文件_「go」 项目多个文件编程