我有一个很长的python脚本,我想部分导出到较小的脚本。有没有办法收集脚本特定部分中使用的所有变量?我不想定义所有未用于脚本的变量。 例如:
var1 = "folder"
var2 = "something else"
var3 = "another thing"
#part of the script I would like to use seperatly
dosomething(var1,var2)
#end of the part
dosomethingelse(var3)
有没有办法将var1和var2列为我脚本的一部分,而不是var3,因为我不太需要它用于我的新子集脚本?
答案 0 :(得分:0)
您可以使用locals()函数来确定在命名空间中声明了哪些变量..即
a = 1
b = 2
print(locals().keys())
c = 3
d = 4
print(locals().keys())
输出
[' a','',' builtins ',' 文件',' 包',' 名称',' doc 强>']
[&#39; a&#39;&#39; c&#39;&#39; b&#39;,&#39; d&#39;,&#39; builtins &#39;,&#39; 文件&#39;,&#39; 包&#39;,&#39; 名称< / strong>&#39;,&#39; doc &#39;]
答案 1 :(得分:0)
通过六个步骤,您可以获取并还原全局变量:
write.py:
NI=str(globals().keys())
NI=eval(NI[NI.find('['):NI.find(']')+1]) #Get the initial situation
S='Test'
S2=input()
D={'a':1,'b':2}
N=1 #Create some variables
I=0
I=str(globals().keys())
I=eval(I[I.find('['):I.find(']')+1])
for i in NI: I.remove(i) #Get your variables
F=open('datafile.txt','w')
for i in I: F.write(i+'='+repr(eval(i))+'\n')
F.close() #Write on a file
read.py:
F=open('datafile.txt')
F.seek(0)
for i in F.read().splitlines(): exec(i)
F.close() #Read from a file
for i in I: print(repr(eval(i))) #Read your variables
在“ write.py”中将“ globals”替换为“ locals”,以仅获取脚本变量。
答案 2 :(得分:0)
只需在要检查变量的位置使用dir()
或更好的print(dir())
。如果在全局空间中编写此代码,它将返回全局变量的列表;如果在函数内部编写此代码,则它将在该函数内部返回变量。