python做中学(一)全局变量的用法

系统 1782 0

  一段时间没有使用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关键字。不然就被当成了局部变量。这点一定要记好。

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论