Python语法基础——关于全局变量与局部变量
1、函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量,例如:
- num = 100
- def func():
- num = 123
- print(num)
- func()
输出:
123
说明函数中定义的num是一个局部变量,会将全局变量覆盖。再例如:
- num = 100
- def func():
- num += 100
- print(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: http://www.tutorialspoint.com/python/python_modules.htm
2、函数内部的变量名如果第一次出现,且出现在=后面,且该变量在全局域中已定义,则这里将引用全局变量,如果该变量在全局域中没有定义,当然会出现“变量未定义”的错误。例如:
- num = 100
- def func():
- x = num + 100
- print(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 = 200
- x = num + 100
- print(x)
- func()
结果:
300
总结:如果使用的变量在全局域中有定义,在局部域中也有定义,则默认会使用局部变量。
4、在函数中,如果想给全局变量赋值,则需要用关键字global生命,例如:
- num = 100
- def func():
- global num
- num = 200
- print(num)
- func()
- print(num)
输出:
200
200
说明函数中给num赋值为200是修改的全局变量,而且这里没有定义新的局部变量,所以后续如果再操作num也是操作的全局变量,例如:
- num = 100
- def func():
- global num
- num = 200
- num += 100
- print(num)
- func()
- print(num)
输出:
300
300
总结:如果要在函数中给全局变量赋值,需要用global关键字声明。
Python语法基础——关于全局变量与局部变量的更多相关文章
- (数据分析)第02章 Python语法基础,IPython和Jupyter Notebooks.md
第2章 Python语法基础,IPython和Jupyter Notebooks 当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题: ...
- Python | Python语法基础
目录 前言 1. 变量与简单数据结构 2. 列表相关 3. 集合 4. If语句 5. 字典 6. 用户输入和while循环 7. 函数 8. 类与对象 9. 文件 10. 异常 11. 测试 最后 ...
- Python之路 day3 全局变量、局部变量
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa """ 全局与局部变量 在子程序中定义的变量称为局部变 ...
- python语法基础笔记
本篇笔记基于博主自己的的学习,理解,总结所写.很多东西可能存在误解,不能保证百分之百的正确. 1. 数据表达1.1 常量和变量1.2 数据类型1.2.1 基本数据元素1.2.1.1 数字1.2.1.2 ...
- python 笔记2:python语法基础
python语法学习笔记: 1 输入输出 input(),print(). name = input('input your name : ')print('hello ,'+name)print(& ...
- Python笔记(七)_全局变量与局部变量
全局变量与局部变量:在函数外部或内部定义的变量 1. 函数内部的变量名首次出现,且在=号左边 不管这个变量在全局域中有没有定义该变量名,都被视为一个局部变量 例1: >>>num=1 ...
- python语法基础-异常操作-长期维护
############### python-异常的操作 ############### # 异常:python解释器遇到一个错误,会停止程序的执行,并且提示错误信息,这就是异常, # 抛出异 ...
- python线程中的全局变量与局部变量
在python多线程开发中,全局变量是多个线程共享的数据,局部变量是各自线程的,非共享的. 如下几种写法都是可以的: 第一种:将列表当成参数传递给线程 from threading import Th ...
- python语法基础-面向对象-基础-长期维护
############### 类的基本操作 ############## """ 类的基本认识: 1,类就是一个模子 2,dict,list都是类,具体的一 ...
随机推荐
- get_time
def get_current_time(): #将python的datetime转换为unix时间戳 dtime = datetime.datetime.now() un_time = time.m ...
- c++之__attribute__((unused))
转自https://blog.csdn.net/u013083059/article/details/19342935 内核时注意到有些函数会有添加__attribute__((unused)), 在 ...
- ABAP 省市县级联搜索帮助
在展示ABAP代码之前,先建立自建表ZCHENH006,表中包含两个关键字段 BELNR(地区编码),SDESC(地区描述). 编码规则参考:身份证前六位地区编码规则,可参考我另外一篇Blog导入系统 ...
- php 获取数组深度的key
1.数组 深度遍历 function fun($a,&$b) { foreach ($a as $k=>$val) { if (is_array($val)) { $b[]=$k; fu ...
- gitlab 常用维护命令
GitLab简介 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务.Github是公共的git仓库,而Gitlab适合于搭建企业内部私有gi ...
- German Collegiate Programming Contest 2018 A. Attack on Alpha-Zet
题目链接https://nanti.jisuanke.com/t/28852 题目大意是 h*w 的平面,每两个点有且仅有一条路径,类似于封闭的联通空间,然后在这h*w个点中选取(标记为1~N)N个点 ...
- layui禁止某些导航菜单展开
官网上查得监听导航菜单的点击 当点击导航父级菜单和二级菜单时触发,回调函数返回所点击的菜单DOM对象: element.on('nav(filter)', function(elem){ consol ...
- [leetcode]49. Group Anagrams变位词归类
Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...
- LWIP学习
转自:https://blog.csdn.net/kzq_qmi/article/details/46900589 数据包pbuf: LwIP采用数据结构 pbuf 来描述数据包,其结构如下: ...
- nc6 用业务插件注册来跑按钮事件
在实际开发中,有些需求是要求系统单据,编辑或者触发其他按钮来回写其他模块单据 这时候就能用业务插件方式来触发其他模块的按钮事件,而不用去模块找对应的按钮编辑事件类 package hz.bs.hzct ...