Fork me on GitHub

  一段时间没有使用python来写代码,就发现以前学习的很多语法都忘了。看来还是当初这方面的项目做的好不够多,没有系统性的运用和学习,导致了很多语法不能顺手拈来。在接下来的这个项目中,

一定要把遇到的一些python知识不熟悉的地方还有遗忘的重新梳理一下,对python要达到灵活运用的境界,不能单纯是能敲代码,要达到学,做,教的三者合一。就是在做中学,学中做,做中教,教中学的

境界。

 

  全局变量的作用域:

  一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。全局变量所有作用域都可用,局部变量只能在本函数可用,变量的使用顺序是,局部变量 > 全局变量, 也就是说:优先使用局部变量

 

  global关键字:

  为了解决函数内使用全局变量的问题,python增加了global关键字, 利用它的特性, 可以指定变量的作用域。

global关键字的作用:声明变量var是全局的

 

     实例一:函数内赋值不能改变全局变量值:

 1 global val
 2 val = 10
 3 
 4 def test1():
 5         global val
 6         val = 5
 7         print('test1 global val:',val)
 8 
 9 def test2():
10         val = 8
11         print('test2 global val:',val)
12 class Test():
13         def __init__(self):
14                 #global val
15                 val = 5
16                 #zoo()
17                 #xy()
18         def connect(self):
19                 print("class in connect global val:",val)
20                 if 5 == val:
21                         print("global val is:",val)
22 
23 if __name__=="__main__":
24         Test().connect()
View Code

 

  运行结果:

class in connect global val: 10

  可以看出,函数内赋值并不能改变全局变量的值,所以需要global关键字

 

  实例二:全局变量值改变必须要有global关键字:

  沈德符

global val
val = 10

def test1():
        global val
        val = 5
        print('test1 global val:',val)

def test2():
        val = 8
        print('test2 global val:',val)
class Test():
        def __init__(self):
                #global val
                val = 5
                test1()
                test2()
        def connect(self):
                print("class in connect global val:",val)
                if 5 == val:
                        print("global val is:",val)

if __name__=="__main__":
        Test().connect()
View Code

   测试结果:

  test1 global val: 5
  test2 global val: 8
  class in connect global val: 5
  global val is: 5

可以看出,全局变量的值改变,必须要有global关键字。不然就被当成了局部变量。这点一定要记好。

 

posted on 2019-07-18 22:59  虚生  阅读(4549)  评论(0编辑  收藏  举报