• Python 再谈变量作用域与变量引用


    再谈变量作用域与变量引用

    by:授客 QQ1033553122

     

    module3.py

    #!/usr/bin/env python
    
    # -*- coding:utf-8 -*-
    
     
    
    __author__ = 'shouke'
    
     
    
    var = 'var_in_module3'
    
     
    

     

    module2.py

    #!/usr/bin/env python
    
    # -*- coding:utf-8 -*-
    
     
    
    __author__ = 'shouke'
    
    from module3 import var
    
     
    
    class ClassOne:
    
        var = 'global var in ClassOne' # 类中的全局变量
    
     
    
        def func(self):
    

            print('var in func for ClassOne: %s' % var) # 引用module3.var

           ClassOne.var = 'var whose value changed in func of ClassOne'
    

    module1.py

    #!/usr/bin/env python

    # -*- coding:utf-8 -*-

     

    __author__ = 'shouke'

    from module3 import var

    from module2 import ClassOne

     

    def function():

        print('var in function: %s' % var)  # 引用module3.var

     

        var1 = 'value_for_var1'

        if True:

            print('var1 in if: %s' % var1)

            var1 = 'value_changed_for_var1'

            print('var1 in if: %s' % var1)

        print('var1 out of if: %s' % var1)

     

        print(' began for loop ')

     

        for num in range(1, 2):

            var1 = 'var1_in_for_loop'

            if True:

                print('var1 in if for loop: %s' % var1)

                var1 = 'value_changed for var1 in if for_loop'

                print('var1 in if for loop: %s' % var1)

            print('var1 out of if for loop: %s' % var1)

     

        print('var1 out of for loop: %s' % var1)

     

    class ClassTwo:

        def func(self):

            var = ClassOne.var # 引用值

            print('var in func of ClassTwo: %s' % var)

     

        def func2(self):

            ClassOne.var = 'value changed in ClassTwo' # 修改值

     

    if __name__ == '__main__':

        function()

        print(' ')

     

        obj1 = ClassTwo()

        obj1.func()

     

        obj2 = ClassOne()

        obj2.func()

     

        print(' ')

        obj2.func()

    obj1.func()

     

    print(' ')

    obj1.func2()

    obj2.func2()

    输出:

    Python <wbr>再谈变量作用域与变量引用

     

    说明:

    1、如何在不同模块中引用同一个变量?

    答案:在一个模块中定义一个全局变量并赋值,然后在其它模块中通过导入定义的变量,在适当的位置引用该变量,如上例中,在module3中定义一个变量,然后通过语句 from module3 import var 导入变量

     

    2、如何在类中定义一个全局变量?

    答案:

    class ClassName

    var_name = xxxxxxxx

     

    在其它模块中,通过导入该类,然后通过ClassName.var_name方式引用变量,或者给变量赋值。

     

    3try……exceptifforwhile子句中的变量作用域与赋值

    举例说明

    Python <wbr>再谈变量作用域与变量引用

     

  • 相关阅读:
    十大经典排序算法最强总结(含JAVA代码实现)
    Java相关官方链接
    强网杯2020(Funhash)
    强网杯2020(主动)
    强网杯2020(upload)
    (内存取证)46届世界技能大赛湖北省选拔赛
    (流量分析)46届世界技能大赛湖北省选拔赛
    CISCO ASA远程任意文件读取
    OOALV 分割屏幕
    Process Doppelg&#228;nging
  • 原文地址:https://www.cnblogs.com/shouke/p/10157764.html
Copyright © 2020-2023  润新知