我有两个脚本,一个在Python 27中调用另一个。第一个脚本Script1.py包含一些条件语句。然后,我有另一个脚本Script2.py,它调用第一个脚本并将参数传递给从第一个脚本导入的函数func1。
但是,在运行第二个脚本时,我收到一个错误,提示未定义func1中的变量。为什么是这样?我该怎么解决?
谢谢
Script1.py:
def func1(var):
if var == '1':
test1 = 'a'
test2 = 'b'
test3 = 'c'
if var == '2':
test1 = 'd'
test2 = 'e'
test3 = 'f'
Script2.py:
from Script1 import func1
func1('1')
print test1, test2, test3
func1('2')
print test1, test2, test3
Traceback (most recent call last):
File "G:/Python27/Script2.py", line 5, in <module>
print test1, test2, test3
NameError: name 'test1' is not defined
答案 0 :(得分:1)
def func1(var):
if var == '1':
test1 = 'a'
test2 = 'b'
test3 = 'c'
elif var == '2':
test1 = 'd'
test2 = 'e'
test3 = 'f'
# to catch error when different argument is passed
else:
test1 = test2 = test3 = None
return test1, test2, test3 # return the variables, so they can be used outside
和:
from Script1 import func1
test1, test2, test3 = func1('1')
print test1, test2, test3
test1, test2, test3 = func1('2')
print test1, test2, test3
答案 1 :(得分:0)
为简化代码,您可以按以下方式定义func1
,请注意,我可以直接返回值,而无需将其分配给变量
def func1(var):
if var == '1':
return 'a', 'b', 'c'
elif var == '2':
return 'd', 'e', 'f'
然后要读取这些值,请读取变量中的值,然后将其打印
from Script1 import func1
test1, test2, test3 = func1('1')
print test1, test2, test3
#a b c
test1, test2, test3 = func1('2')
print test1, test2, test3
#d e f
要更进一步,您还可以将它们分配到列表中,并进行打印
print(func1('1'))
print(func1('2'))
#('a', 'b', 'c')
#('d', 'e', 'f')
答案 2 :(得分:0)
在script1.py
中T = {'test1':'', 'test2':'', 'test3':''}
def func1(var):
if var == '1':
T['test1'] = 'a'
T['test2'] = 'b'
T['test3'] = 'c'
if var == '2':
T['test1'] = 'd'
T['test2'] = 'e'
T['test3'] = 'f'
在script2.py
中from script1 import (T, func1)
func1('1')
print T['test3'], T['test2'], T['test1']
func1('2')
print T['test3'], T['test2'], T['test1']