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环境下):3

4

5

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

python中全局变量有缩进吗_python有全局变量吗相关推荐

  1. python中for循环缩进_Python减少循环层次和缩进的技巧分析

    本文实例分析了Python减少循环层次和缩进的技巧.分享给大家供大家参考,具体如下: 我们知道Python中冒号和缩进代表大括号,这样写已经可以节省很多代码行数,但是可以更优化,尽可能减少循环的层次和 ...

  2. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  3. python中for语句用法_详解Python中for循环的使用_python

    这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...

  4. python中函数的定义包括_python中函数的定义及调用

    python中函数的定义及使用方法 1.函数的概念:函数是将具有独立功能的代码块组织为一个整体,使其具有特殊功能的代码集; 2.函数的作用:使用函数可以加强代码的复用性,提高程序编写的效率; 3.函数 ...

  5. python中意外缩进是什么意思_语法错误 - 如何处理python中的“意外缩进”?

    语法错误 - 如何处理python中的"意外缩进"? 如何纠正python中的"意外缩进"错误? 15个解决方案 116 votes Python在行的开头使用 ...

  6. python中if else语句用法_Python If-else语句用法详解

    本文概述 决策是几乎所有编程语言中最重要的方面.顾名思义, 决策制定使我们可以为特定决策运行特定代码块.在此, 将根据特定条件的有效性做出决定.条件检查是决策的基础. 在python中, 决策由以下语 ...

  7. python以什么表示代码层次_在Python中,采用代码缩进和( )区分代码之间的层次。_学小易找答案...

    [填空题]29 号元素 Cu 基态时的电子排布式为 ___ __ ,该元素在周期表中位于 __ _ 周期. __ __ 族. [单选题]"我要努力实现梦想,以弥补小时候吹过的牛"小 ...

  8. python中异或怎么算_python 异或运算的前提_异或运算公式

    Python基础(10)–数字-Python-第七城市 609x288 - 73KB - JPEG Python基础(10)--数字_资讯_突袭网 609x288 - 33KB - JPEG pyth ...

  9. python中定义变量和数组_Python中的线程和全局变量 - 数组和标准变量之间的区别?...

    我目前尝试使用线程编写一个更大的python程序,并遇到了数组不必被声明为全局的问题.Python中的线程和全局变量 - 数组和标准变量之间的区别? import numpy as np import ...

最新文章

  1. hibernate中的hql查询语句list查询所有与iterate查询所有的区别
  2. 笔记本电脑如何像手机那样显示最近运行程序:三指上滑;以及如何滚动屏幕:双指上下滑
  3. 2017年山东省ACM省赛总结
  4. SpringBoot 2.x (12):整合Elasticsearch
  5. 07-图4. Saving James Bond - Hard Version (30)
  6. android远程桌面闪退,win7系统连接远程桌面出现闪退问题的两种解决方法详细教程...
  7. pc端常用的屏幕分辨率
  8. C++ 进程间通信(管道)
  9. 在线XML转TSV工具
  10. 2021-9-25 MQTT 阿里云服务器 esp32 micropython物联 以及pythonPC端
  11. java本地缓存简介
  12. 惠普打印机驱动服务器系统安装教程,Hp打印机驱动怎么安装,详细图文版教程...
  13. pLC支持C语言编程执行复杂控制,能够实现多种工作方式的plc控制系统的编程
  14. 思科恢复服务器上的配置信息,思科服务器的配置方法
  15. 运用简单的超市购物车系统,理解重写equals、hashcode的意义
  16. GitHub 上有什么好玩又有挑战的前端项目?
  17. access下如何配置两个vlan_VLAN实验一:VLAN基础配置及Access接口
  18. OBS Stduio 捕获屏幕预览黑屏 win10解决方案
  19. NDK版本、获取以及和ANDROID对应关系
  20. 在云计算时代,如何保护个人隐私?

热门文章

  1. autocad完全应用指南_如何提高CAD画图的速度?有哪些途径和技法?【AutoCAD教程】...
  2. oracle 查询简单,Oracle简单查询
  3. 不间断电源ups标准_UPS不间断电源除尘技巧分析
  4. warframe怒焚者结合目标_【虚荣盒子】设计目标和功能规划
  5. js 异步执行_JS Asynchronous — JS 异步编程极简史
  6. php折半查找算法,二分查找 [折半查找] 算法 PHP 版
  7. java 记事本全选_java 编写的记事本程序怎么实现复制 黏贴 剪切 全选的功能 ?...
  8. 基金指数温度怎么算_结构粘钢胶流淌很严重怎么办?
  9. printf 重新实现put_Go 实现海量日志收集系统(四)
  10. c语言从源代码到可执行,从源代码到可执行文件