python中的全局变量和局部变量以及可变数据类型
2017-09-07 10:17
555 查看
全局变量和局部变量
一、局部变量:在函数内部定义的变量,叫局部变量当这个函数被调用的时候,这个变量存在,当这个函数执行完成之后,因为函数都已经结束了,所有函数里面定义的变量也就结束了
在一个函数中定义的局部变量,只能在这个函数中使用,不能再其他的函数中使用
二、全局变量:子函数外边定的变量,叫做全局变量
所有的函数都可以使用它的值
如果函数需要修改全局变量的值,那么需要在这个函数中,使用 global xxx进行说明。
如:
age = 18 def A(): age = 100 print(age) def B(): global age age = 200 print(age) def C(): print(age) A() B() C()
输出结果为
100 200 200
但并不是所有的全局变量在函数中使用时都需要global声明。这里就要说说朋友python中所谓的“可变数据类型”和“不可变数据类型”。
可变数据类型
首先,我们需要知道在python中哪些是可变数据类型,哪些是不可变数据类型。可变数据类型,值可以改变:列表list和字典dict;
不可变数据类型,值不可以改变:整型int、浮点型float、字符串型string和元组tuple。
具体什么原理这里不做解释,只说一下可变数据类型和不可变数据类型作为变量的不同用法。
当不可变数据类型作为全局变量时,需要global声明,而可变数据类型就不一定。先来看一段代码:
test = [] def D(): test.append(1) print(test) D()
输出结果为:
[1]
在程序中,列表test为全局变量,但在函数D中,没有global声明,就能改变,注意此时用的是.append添加值。
再来看一段代码:
test1 = [] def E(): test1 = [1,2] print(test1) E() print(test1)
输出结果为:
[1, 2] []
可以看出,test1的内容并没有改变,仍然是空,这是为什么呢?
还有:
test2 = [1,2] def F(a): a += a print(a) F(test2) print(test2)
结果为:
[1, 2, 1, 2] [1, 2, 1, 2]
这时,test2又被改变了。为什么会这样呢?这就牵扯到引用的问题了。
所以我觉得为了保险
8b13
起见,不管是不是可变数据类型,只要作为全局变量,最好还是加上global声明。
相关文章推荐
- python:global,可变数据类型与不可变数据类型,在声明全局变量中的不同
- python变量总结: 全局变量、局部变量、类变量、实例变量以及global和nonlocal关键字的使用示例
- python数据类型与变量总结,可变类型与不可变类型测试,·数据类型多功能的分类
- Python中数据类型变量,编码以及格式化注意细节O(∩_∩)O
- Lua编程笔录--Lua初识及语法一(注释,变量命名,全局/局部变量,数据类型)
- python学习3-python变量以及数据类型
- python学习记录 — (1) 变量及数据类型
- python局部变量和全局变量
- python中的局部变量和全局变量
- swift的全局和局部变量以及类型属性
- python的 局部变量和全局变量
- Python变量和简单数据类型
- 对“C++添加一个头文件和extern以及全局变量和局部变量问题”的解释
- Python 局部变量与全局变量
- python 局部变量和全局变量 global
- 初识Python-2、Python的常/变量、数据类型、运算符
- python中的全局变量与局部变量
- Python学习第二课-Python变量、运算符、表达式、数据类型
- 用类名做方法的返回值类型 在学习Java的初始阶段,很多同学使用基本数据类型定义变量和引用类型定义变量以及使用类名做方法的返回值类型常常不知所以。今天我以自己的解读方式和个人的理解作一个简单的解释,和
- java 变量,数据类型转换,以及运算符的学习