Python 局部变量与全局变量
本来以为 局部变量就是在函数/def/class/lambda内部的变量,全局变量就是在之前这些之外的变量。但是,再一次学习Python atm 中应用时发现了一次特例(意外)
字典中 在函数内部改变 其部分值之后,在函数外打印字典,字典的值竟然改变了。
x = {"w":1,"k":2} def a(x): x["w"] = 123
x = {"w":999,"k":3433}
return x def v():
c = a(x)
print(x) v()
于是上网搜了一下 Python 全局变量与局部变量定义
1.定义的函数内部的变量名如果第一次出现,且在 = 前 那么就认为被定义的函数是局部变量,不论是否全局变量中是否用到该函数名
num = 10 def func():
num = 19
print(num) #值为19
func()
print (num) #值为10
再者
num = 10 def func():
num = num + 19
print(num)
func()
print (num)
将报错 :unboundlocalerror
num = 10 def func(num):
num = num + 19
print(num) func(num)
print (num)
在函数中传入参数则不会, 此时 num在函数中是全局变量
2. global 声明全局变量
d = 6 def a(): global d print(d)
d = d + 2131 def v(): c = a() print(d) v()
在函数内部声明global之后,修改d的值,则全局变量值改变。(此函数不能传入参数d,否则global d则会报错)
3.有时候想在函数内部引用全局的变量,疏忽就会出现下列错误:
var = 1 def fun():
print(var)
var = 300 print(fun()) ------------------------------------------ var = 2 def fun():
var =var + 2
return var
print(fun())
4.字典
x1 = {"w":1,"k":2}
x2 = {"o":3,"p":2}
def a(x2): x1["w"] = 123
x2 = {"o":999,"p":343} return x1,x2 def v(): c = a(x2) print(x1,x2) v()
{'k': 2, 'w': 123} {'p': 2, 'o': 3}
x1 = {"w":1,"k":2}
x2 = {"o":3,"p":2}
def a(x1,x2): x1["w"] = 123
x2 = {"o":999,"p":343} return x1,x2 def v(): c = a(x1,x2) print(x1,x2) v()
输出值:{'k': 2, 'w': 123} {'p': 2, 'o': 3}
Python 局部变量与全局变量的更多相关文章
- python局部变量和全局变量(6)
在python开发中,变量也是有生命周期的,一旦周期结束,程序会自动清理暂用的空间,释放内存,变量分为两者,一种是局部变量,一种是全局变量,两者具体有什么区别呢…… 一.局部变量 一般而言在函数内部或 ...
- 详解python 局部变量与全局变量
本文将详细分析python的全局变量与局部变量,学过php的人都知道,php里面的全局变量是无法在function里面去使用的,只有超全局变量才可以,那么python会怎么处理全局变量与局部变量呢?下 ...
- python 局部变量和全局变量 global
当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的.这称为变量的 作用域 .所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开 ...
- Python局部变量和全局变量global
当你在函数定义声明变量的时候,它们与函数外具有相同名称的其它变量没有任何关系,即变量名称对于函数来说是 局部 的.这称为变量的 作用域 .所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开 ...
- python局部变量与全局变量
name = "head first python"def what_happens_here(): print(name) 1 name = "pytho ...
- Python 局部变量转为全局变量
- python的局部变量,全局变量,类变量,实例变量
定义: a.全局变量:在模块内.在所有函数外面.在class外面,这就是全局变量. b.局部变量:在函数内.在class的方法内(未加self修饰的),这就是局部变量. c. 静态变量:在class内 ...
- python变量进阶(可变不可变,局部变量和全局变量)
变量进阶(理解) 目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引 ...
- Python基础笔记系列九:变量、自定义函数以及局部变量和全局变量
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 变量在前面的系列中也许就可以发现,python中的变量和C中的变量有些许不 ...
随机推荐
- HDU 1564 Play a game(巴什博弈)
New Year is Coming! ailyanlu is very happy today! and he is playing a chessboard game with 8600. The ...
- UICollectionLayout布局 —— UIKit之学习UICollectionView记录二《流水布局》
重点知识 一. 加载collectionView注意事项 1.创建collectionView,有两种方式 :一种是xib和一种是纯代码:设置代理和数据源,注册cell,配置流水布局的属性,如上.下. ...
- json文件
json为什么会火 参考链接 http://www.jb51.net/article/32830.htm
- Android/Linux下CGroup框架分析及其使用
1 cgroup介绍 CGroup是control group的简称,它为Linux kernel提供一种任务聚集和划分的机制,可以限制.记录.隔离进程组(process groups)所使用的资源( ...
- js压缩xml字符串,将xml字符串转换为xml对象,将xml对象转换为json对象
/** * 压缩xml字符串 */ function compressXmlStr(str){ var prefix, suffix; var i = str.indexOf("\r&quo ...
- 【USACO 3.1】Stamps (完全背包)
题意:给你n种价值不同的邮票,最大的不超过10000元,一次最多贴k张,求1到多少都能被表示出来?n≤50,k≤200. 题解:dp[i]表示i元最少可以用几张邮票表示,那么对于价值a的邮票,可以推出 ...
- Mysql主从架构的复制
复制类型 (1)基于语句的复制: 在主服务器上执行的SQL语句,在从服务器上执行同样的语句.MySQL默认采用基于语句的复制,效率比较高. 一旦发现没法精确复制时,会自动选着基于行的复制. (2) ...
- 启动Maven项目启动报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
tomcat在发布项目的时候没有同时发布maven依赖所添加的jar包,你需要设置一下eclipse:项目 -> 属性 -> Deployment Assembly -> Add - ...
- c# treeview 基本知识
private void Form1_Load(object sender, EventArgs e) { BindTreeView(); treeView1.Focus(); treeView1.G ...
- javadoc
Oracle官方javadoc说明 Generates HTML pages of API documentation from Java source files. http://docs.orac ...