我现在正在研究python中的模块用法,并认为我将从两个角度回答Markus在上面的评论中提出的问题(“如何将变量嵌入模块中时导入变量?”):
- 变量/函数,以及
- 类属性/方法。
这是我重写主程序f1.py的方法,以演示Markus的变量重用:
import f2
myStorage = f2.useMyVars(0)
for i in range(0,10):
print "Hello, "
f2.print_world()
myStorage.setMyVar(i)
f2.inc_gMyVar()
print "Display class property myVar:", myStorage.getMyVar()
print "Display global variable gMyVar:", f2.get_gMyVar()
这是我重写可重用模块f2.py的方法:
gMyVar = 0
def print_world():
print "World!"
def get_gMyVar():
return gMyVar
def inc_gMyVar():
global gMyVar
gMyVar += 1
class useMyVars(object):
def __init__(self, myVar):
self.myVar = myVar
def getMyVar(self):
return self.myVar
def setMyVar(self, myVar):
self.myVar = myVar
def print_helloWorld(self):
print "Hello, World!"
当执行f1.py时,输出如下所示:
%run "f1.py"
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Hello,
World!
Display class property myVar: 9
Display global variable gMyVar: 10
我认为Markus的要点是:
- 要多次重复使用模块的代码,请将模块的代码放入函数或类中,
- 要重用作为属性存储在模块中的变量,请在类中初始化属性,并添加“ getter”和“ setter”方法,这样就不必将变量复制到主程序中,
- 要重用存储在模块中的变量,请初始化变量并使用getter和setter函数。setter函数会将变量声明为全局变量。