我发现它非常有用,能够在运行时创建新的变量和创造的结果进行处理的字典后,即写入文件:的Python:使用瓦尔()将一个字符串分配给一个变量
myDict = {}
for i in range (1,10):
temp = "variable"+str(i)
vars()[temp] = myFunctionThatReturnsData() # variable1= data1, variable2 = data2,etc.
myDict[temp] = vars(temp)
它创建了我可以用myDict [result1]调用的字典条目[result1:data1]。我一直在使用vars()而没有真正理解我在做什么。我把它vars()
返回与局部变量的字典,并
瓦尔()[X] = Y
创建[X:Y]的新字典项(?)?
我有一个脚本,我在{input1:data1,input2:data2}准备的字典中传递,我使用此方法遍历所有值,存储所有结果并将其输出到文件。这段代码是在一个类中的函数中,并且正在工作。
我的困惑的根源是,我已经阅读了如何当地人各个岗位()不应该与被搞砸了,怎么瓦尔()相当于(?)当地人(),或全局()..
所以我的问题是(至少)两个方面:
1.什么究竟VARS(),或特别是,乏()[X] = Y这样做,
2.什么范围这个字典是(我需要记住我写大程序
3.Whether这是良好的编程 实践。
在此先感谢!
我认为'vars()['x'] = 4'和'x = 4'实际上只相当于一些时间。如果你在一个函数中这样做,并且不在其他地方设置'x',并且函数被编译器优化了,那么函数后面的'x'的正常查找(即'y = x + 2')没有工作。我认为编译器会缓存它可以看到的变量(可能在编译时定义),并没有考虑到这种shenanigan。如果你为你的函数添加一个exec语句,那么编译器不会尝试优化函数。 – 2010-02-23 21:05:10
感谢周到的答案, 在序列数据: 功能(基准) 看起来非常有用的。今天我学到了很多东西,谢谢! – PPTim 2010-02-23 21:28:38
要查找关于该构造的更多信息,请查找“python迭代器” – jcdyer 2010-02-23 22:04:09