列出python脚本中使用的所有变量

时间:2017-03-01 11:12:32

标签: python-2.7

我有一个很长的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,因为我不太需要它用于我的新子集脚本?

3 个答案:

答案 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())。如果在全局空间中编写此代码,它将返回全局变量的列表;如果在函数内部编写此代码,则它将在该函数内部返回变量。