再談變量作用域與變量引用
by:授客 QQ:1033553122
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 out of if: %s' % var1)
print('\nbegan for loop \n')
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 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('\n')
obj1 = ClassTwo()
obj1.func()
obj2 = ClassOne()
obj2.func()
obj1.func()
print('\n')
obj1.func2()
obj2.func2()
輸出:

說明:
1、如何在不同子產品中引用同一個變量?
答案:在一個子產品中定義一個全局變量并指派,然後在其它子產品中通過導入定義的變量,在适當的位置引用該變量,如上例中,在module3中定義一個變量,然後通過語句 from module3 import var 導入變量
2、如何在類中定義一個全局變量?
答案:
class ClassName:
var_name = xxxxxxxx
在其它子產品中,通過導入該類,然後通過ClassName.var_name方式引用變量,或者給變量指派。
3、try……except,if,for,while子句中的變量作用域與指派
舉例說明
作者:授客
QQ:1033553122
全國軟體測試QQ交流群:7156436
Git位址:https://gitee.com/ishouke
友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!
作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額随意,您的支援将是我繼續創作的源動力,打賞後如有任何疑問,請聯系我!!!
微信打賞
支付寶打賞 全國軟體測試交流QQ群