总结:只要是*使用*变量,而该变量在全局域中有定义,而在局部没有定义,则会使用全局变量复制代码

1、函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量,例如:

num = 100
def func():num = 123print(num)func()复制代码

输出:

123

说明函数中定义的num是一个局部变量,会将全局变量覆盖。再例如:

num = 100
def func():num += 100print(num)func()复制代码

输出:

UnboundLocalError: local variable 'num' referenced before assignment

错误提示局部变量num在赋值前被应用,也就是该变量没有定义就使用它,由此再次证明了这里定义了一个局部变量,而不是使用的全局的num。

总结:函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量。

Python makes educated guesses on whether variables are local or global. It assumes that any variable assigned a value in a function is local.

From: www.tutorialspoint.com/python/pyth…

2、函数内部的变量名如果第一次出现,且出现在=后面,且该变量在全局域中已定义,则这里将引用全局变量,如果该变量在全局域中没有定义,当然会出现“变量未定义”的错误。例如:

num = 100
def func():x = num + 100print(x)func()复制代码

输出:

200

表示这里使用的num是全局变量num。

或者其他使用该变量(例如调用成员函数)的情况,也将引用全局变量,例如:

a = [1, 2]
def func():a.append(3)print(a)func()复制代码

输出:

[1, 2, 3]

总结:只要是*使用*变量,而该变量在全局域中有定义,而在局部没有定义,则会使用全局变量。

3、函数中使用某个变量时,该变量名既有全局变量也有同名的局部变量,则会使用局部变量,例如:

num = 100
def func():num = 200x = num + 100print(x)func()复制代码

结果:

300

总结:如果使用的变量在全局域中有定义,在局部域中也有定义,则默认会使用局部变量。

4、在函数中,如果想给全局变量赋值,则需要用关键字global生命,例如:

num = 100
def func():global numnum = 200print(num)func()
print(num)复制代码

输出:

200

200

说明函数中给num赋值为200是修改的全局变量,而且这里没有定义新的局部变量,所以后续如果再操作num也是操作的全局变量,例如:

num = 100
def func():global numnum = 200num += 100print(num)func()
print(num)复制代码

输出:

300

300
总结:如果要在函数中给全局变量赋值,需要用global关键字声明。

Python看似简单的地方——关于全局变量与局部变量相关推荐

  1. python获取程序文件中的全局变量和局部变量的函数

    目录 global()和locals()函数 (一)演示示例 (二)程序执行结果 (三)简单使用 (四)参考资料 global()和locals()函数 使用global()可以获取Python中的全 ...

  2. python 函数递归一次增加一次变量_python3--函数(函数,全局变量和局部变量,递归函数)...

    1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合. 函数名:就相当于是程序代码集合的名称 参数:就是函数运算时需要参与运算的值被称作为参数 函数体:程序的某个 ...

  3. hashcode的作用_看似简单的hashCode和equals面试题,竟然有这么多坑!

    hashCode()方法和equals()区别与联系这到面试题,看似简单,根据以往面试星友的情况来说,绝大部分人都不能很好的回答出来,要么没有逻辑,想到一句就说一句,要么抓不住重点,答非所问.从这个很 ...

  4. python中全局变量和局部变量关键字_Python中全局变量和局部变量的理解与区别

    前言 学过编程的人应该对全局变量与局部变量这两个名词并不陌生,Python也同多数编程语言一样,也有全局变量与局部变量的概念 但是与其他编程语言又有所不同 全局变量与局部变量两者的本质区别就是在于作用 ...

  5. python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...

    每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...

  6. python写游戏棋牌游戏_使用python实现简单五子棋游戏

    使用python实现简单五子棋游戏 发布时间:2020-08-29 06:12:30 来源:脚本之家 阅读:73 作者:weixin_42874933 用python实现五子棋简单人机模式的练习过程, ...

  7. 关于python的全局变量和局部变量、以下描述错误的是_Python:全局变量与局部变量的问题...

    在Python中,如果处理不好变量使用的关系,就很容易出现: UnboundLocalError: local variable 'n' referenced before assignment 这种 ...

  8. python 局部变量 占内存吗_Python中全局变量和局部变量的理解与区别

    前言 学过编程的人应该对全局变量与局部变量这两个名词并不陌生,Python也同多数编程语言一样,也有全局变量与局部变量的概念 但是与其他编程语言又有所不同 全局变量与局部变量两者的本质区别就是在于作用 ...

  9. python服务端语言_使用Python实现简单的服务器功能

    socket接口是实际上是操作系统提供的系统调用.socket的使用并不局限于Python语言,你可以用C或者Java来写出同样的socket服务器,而所有语言使用socket的方式都类似(Apach ...

最新文章

  1. kubernetes(k8s)使用声明式管理与 创建yaml模板文件
  2. 分布式系统原理 之6 两阶段提交协议
  3. SAP CRM呼叫中心里的Java stack
  4. 图解MySQL 内连接、左连接、右连接
  5. mysql表级别的操作_MySql 库/表级操作 及 数据类型 - 纪宇
  6. 缓冲文件系统(fopen/fread/fwrite)和非缓冲文件系统(open/read/write)
  7. 字节跳动 计算机视觉方向算法实习生 招聘!
  8. 华为云MVP付健权:从机械工程师到AI开发者的华丽转身
  9. 【unity】解决 2d-extras 的 CustomRuleTileMenu 脚本报错的问题
  10. proteus实现单片机的仿真
  11. 边缘计算与移动边缘计算联系
  12. Win7平台上通过QQ查询对方IP地址
  13. 【转载】 ppt如何导出300dpi的高分辨率图片
  14. Lenovo ServerGuide 10.4
  15. 管理信息系统需求调研分析指南-软件工程-www.knowsky.com
  16. JS继承--圣杯模式的详解
  17. 淘宝服务商怎么入驻(入驻淘宝需要什么条件)
  18. C++环境下部署深度学习模型方案
  19. 计算某个字符出现的次数
  20. Obama Praises Japanese Partnership

热门文章

  1. php中data(,如何使用php中的data函数
  2. oracle count最快的方法,Oracle count哪种写法更快
  3. string包含某个字符串_Tcl字符串操作基础2
  4. mysql去掉两个最高分_如何计算去掉一个最高分和一个最低分后的平均分?
  5. mysql 非自然月统计_技本功|统计信息对SQL执行效率的影响
  6. python爬虫论文摘要怎么写_Python爬虫基础教学(写给入门的新手)
  7. FTP搭建网络yum源
  8. 服务器堡垒机登录方式
  9. 调整表格的行高_Word表格无法调整行高?尽然是这个原因,90%的人都可能遇到...
  10. 发布json数据_技术分享 | MySQL 8.0.17 GA 发布!