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>再谈变量作用域与变量引用

 

原文地址:https://www.cnblogs.com/shouke/p/10157764.html