python 3.x 变量作用域
变量作用域
- 定义 : 每个变量都有自己的作用范围,这个范围就是变量的作用域
全局变量
- 定义 : 是一个模块级别的变量,它不属于任何一个函数,但可以被多个函数使用
1 # c是全局变量,可以被多个函数调用 2 c = 50 3 4 def add(x, y): 5 print(c) 6 7 add(1, 2) 8 print(c) 输出结果: 13 50 14 50
局部变量
- 定义 : 函数中所定义的变量
1 # c是全局变量,可以被多个函数调用 2 c = 50 3 4 def add(x, y): 5 """ 两个数的加法计算 """ 6 # c是局部变量,仅作用于当前函数 7 # 局部变量c与全局变量c是两个变量.仅仅是变量名相同. 8 c = x + y 9 print(c) 10 11 add(1, 2) 12 print(c) 输出结果: 16 3 17 50
for循环,while循环,if..else...外部调用他们内部的变量
- 因为在python中没有块级作用域的概念.
- for循环,while循环,if...else...他们是一个代码块,在python中一个代码块是没有办法形成一个作用域的.
- python中函数是可以形成一个作用域
- 在python中for循环,while循环,if...else...中定义的变量都会视为和函数变量为同一级别的变量
1 # c是全局变量,可以被多个函数调用 2 c = 50 3 4 def add(x, y): 5 6 if(x == 1): 7 a = 3 8 else: 9 a = 0 10 11 c = x + y + a 12 print(c) 13 14 add(1, 2) 15 print(c) 输出结果: 19 6 20 50
变量作用域链
- 作用域是有一种链式特性
- 作用域是持有一个逐级寻找的过程
1 c = 1 2 def func1(): 3 c = 2 4 def func2(): 5 c = 3 6 print(c) 7 func2() 8 func1() 输出结果: 12 3
1 c = 1 2 def func1(): 3 c = 2 4 def func2(): 5 # c = 3 6 print(c) 7 func2() 8 func1() 输出结果: 12 2
1 c = 1 2 def func1(): 3 # c = 2 4 def func2(): 5 # c = 3 6 print(c) 7 func2() 8 func1() 输出结果: 12 1
global关键字
- global修饰的变量作用域为全局作用域,不管此变量在模块中哪个地方定义,只要有global修饰此变量,全局以及其他模块都可以导入(import)使用.
func4.py 3 a = 5 4 c = 10 5 def func1(): 6 # 修改全局变量a的值 7 global a 8 a = 1 9 10 # 在函数内部定义全局变量 11 global b 12 b = 4 13 14 # 局部变量c与全局变量c是两个不同的变量,仅仅是变量名相同而已 15 c = 7 16 17 print("函数func1 : ", a) 18 print("函数func1 : ", c) 19 20 func1() 21 print("全局变量a : ", a) 22 print("全局变量b : ", b) 23 print("全局变量c : ", c)
1 import func14 2 3 print("==============func15==============") 4 print("引用func14.py变量a : ", func14.a) 5 print("引用func14.py变量b : ", func14.b) 6 print("引用func14.py变量c : ", func14.c) 7 8 9 输出结果: 10 11 f:\C\PythonVSCode\function>python func15.py 12 13 函数func1 : 1 14 函数func1 : 7 15 全局变量a : 1 16 全局变量b : 4 17 全局变量c : 10 18 ==============func15============== 19 引用func14.py变量a : 1 20 引用func14.py变量b : 4 21 引用func14.py变量c : 10
posted on 2018-06-23 13:44 jaydenjune 阅读(46) 评论(0) 收藏 举报
浙公网安备 33010602011771号