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)    收藏  举报

导航