有条件地在另一个脚本中调用一个函数并使用它的变量

时间:2019-04-21 13:34:12

标签: python python-2.7

我有两个脚本,一个在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

3 个答案:

答案 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']