如何在python中返回for循环值并在其他脚本

时间:2017-04-28 00:29:54

标签: python scripting

通过以下功能,我可以打印crew_filternode的信息。但我需要帮助将这些值返回到目标脚本。还有我如何在目标脚本中访问它们?

def getValuesForNode(self):
   for crew_filter, node in self.getNodes():
       print crew_filter, node

注意:由于crew_filternode会有多个值,我需要将它们存储在元组或字典中。

1 个答案:

答案 0 :(得分:1)

如果课程Test写在脚本test.py中。

test.py

class Test:
    def get_values_for_node(self):
        test_data = (
            (1, 2),
            (3, 4),
            (5, 6)
        )
        for crew_filter, node in test_data:
            yield crew_filter, node

然后,您可以通过另一个脚本中定义的生成器访问您的值,例如foo.py

foo.py

from test import Test

if __name__ == '__main__':
    test = Test()
    for crew_filter, node in test.get_values_for_node():
        print('{0} - {1}'.format(crew_filter, node))

输出

1 - 2
3 - 4
5 - 6

你可以用你的数据源替换var test_data,无论是tuple还是dict,如果你想迭代一个dict你必须这样做,如下所示:

class Test:
    def get_values_for_node(self):
        test_data = {
            'id':1,
            'name': 'tom',
            'age': 23
        }
        for crew_filter, node in test_data.items():
            yield crew_filter, node

输出

id - 1
name - tom
age - 23

如果您不熟悉yield的使用或generator的概念,可以查看此页面:

What does the "yield" keyword do in Python?