Python看似简单的地方——关于全局变量与局部变量
总结:只要是*使用*变量,而该变量在全局域中有定义,而在局部没有定义,则会使用全局变量复制代码
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看似简单的地方——关于全局变量与局部变量相关推荐
- python获取程序文件中的全局变量和局部变量的函数
目录 global()和locals()函数 (一)演示示例 (二)程序执行结果 (三)简单使用 (四)参考资料 global()和locals()函数 使用global()可以获取Python中的全 ...
- python 函数递归一次增加一次变量_python3--函数(函数,全局变量和局部变量,递归函数)...
1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合. 函数名:就相当于是程序代码集合的名称 参数:就是函数运算时需要参与运算的值被称作为参数 函数体:程序的某个 ...
- hashcode的作用_看似简单的hashCode和equals面试题,竟然有这么多坑!
hashCode()方法和equals()区别与联系这到面试题,看似简单,根据以往面试星友的情况来说,绝大部分人都不能很好的回答出来,要么没有逻辑,想到一句就说一句,要么抓不住重点,答非所问.从这个很 ...
- python中全局变量和局部变量关键字_Python中全局变量和局部变量的理解与区别
前言 学过编程的人应该对全局变量与局部变量这两个名词并不陌生,Python也同多数编程语言一样,也有全局变量与局部变量的概念 但是与其他编程语言又有所不同 全局变量与局部变量两者的本质区别就是在于作用 ...
- python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...
每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...
- python写游戏棋牌游戏_使用python实现简单五子棋游戏
使用python实现简单五子棋游戏 发布时间:2020-08-29 06:12:30 来源:脚本之家 阅读:73 作者:weixin_42874933 用python实现五子棋简单人机模式的练习过程, ...
- 关于python的全局变量和局部变量、以下描述错误的是_Python:全局变量与局部变量的问题...
在Python中,如果处理不好变量使用的关系,就很容易出现: UnboundLocalError: local variable 'n' referenced before assignment 这种 ...
- python 局部变量 占内存吗_Python中全局变量和局部变量的理解与区别
前言 学过编程的人应该对全局变量与局部变量这两个名词并不陌生,Python也同多数编程语言一样,也有全局变量与局部变量的概念 但是与其他编程语言又有所不同 全局变量与局部变量两者的本质区别就是在于作用 ...
- python服务端语言_使用Python实现简单的服务器功能
socket接口是实际上是操作系统提供的系统调用.socket的使用并不局限于Python语言,你可以用C或者Java来写出同样的socket服务器,而所有语言使用socket的方式都类似(Apach ...
最新文章
- kubernetes(k8s)使用声明式管理与 创建yaml模板文件
- 分布式系统原理 之6 两阶段提交协议
- SAP CRM呼叫中心里的Java stack
- 图解MySQL 内连接、左连接、右连接
- mysql表级别的操作_MySql 库/表级操作 及 数据类型 - 纪宇
- 缓冲文件系统(fopen/fread/fwrite)和非缓冲文件系统(open/read/write)
- 字节跳动 计算机视觉方向算法实习生 招聘!
- 华为云MVP付健权:从机械工程师到AI开发者的华丽转身
- 【unity】解决 2d-extras 的 CustomRuleTileMenu 脚本报错的问题
- proteus实现单片机的仿真
- 边缘计算与移动边缘计算联系
- Win7平台上通过QQ查询对方IP地址
- 【转载】 ppt如何导出300dpi的高分辨率图片
- Lenovo ServerGuide 10.4
- 管理信息系统需求调研分析指南-软件工程-www.knowsky.com
- JS继承--圣杯模式的详解
- 淘宝服务商怎么入驻(入驻淘宝需要什么条件)
- C++环境下部署深度学习模型方案
- 计算某个字符出现的次数
- Obama Praises Japanese Partnership
热门文章
- php中data(,如何使用php中的data函数
- oracle count最快的方法,Oracle count哪种写法更快
- string包含某个字符串_Tcl字符串操作基础2
- mysql去掉两个最高分_如何计算去掉一个最高分和一个最低分后的平均分?
- mysql 非自然月统计_技本功|统计信息对SQL执行效率的影响
- python爬虫论文摘要怎么写_Python爬虫基础教学(写给入门的新手)
- FTP搭建网络yum源
- 服务器堡垒机登录方式
- 调整表格的行高_Word表格无法调整行高?尽然是这个原因,90%的人都可能遇到...
- 发布json数据_技术分享 | MySQL 8.0.17 GA 发布!