Python for循环调用一个函数,该函数调用另一个函数

bvjxkvbb  于 2023-02-10  发布在  Python
关注(0)|答案(2)|浏览(228)

我正在使用for循环迭代一个开关列表。对于switch_list中的每个设备,我调用function1。然后,function1调用function2。然而,这是处理结束的时候。我需要返回for循环,以便处理switch2、switch3等......
下面是输出:

  • 我们是主流 *
  • 我们在function1中,设备名称为switch1 *
  • 我们处于function2中,设备名称为switch1 *

下面是我的代码:

switch_list = ['switch1', 'switch2']

def main():
    print('We are in main')
    for device in switch_list:
        main_action = function1(device)
        return(device)

def function1(device):
    print(f'We are in function1 and the device name is {device}')
    function1_action = function2(device)

def function2(device):
    print(f'We are in function2 and the device name is {device}')
 
if __name__ == '__main__':
    main()

如有任何协助,不胜感激。

xlpyo6sf

xlpyo6sf1#

这是因为你的main函数中的return()语句在for循环中,如果你把它从for循环中去掉,你的问题就解决了。
return()表示函数的结束,所以当代码看到return语句时,它会退出main(),并且只得到第一个设备的输出。
由于您正在运行for循环,因此可以创建一个设备列表,并在循环完成后传递它。
大概是这样的

def main():
    main_output_list = []
    print("We are in main")
    for device in switches:
        main_action = function1(device)
        main_output_list.append(output of main)
    return(main_output_list)
sauutmhj

sauutmhj2#

正如 Alexandria 所建议的,return关键字退出函数,将提供的值返回到调用方法的位置。
例如

def give_10():
    return 10
    print("I am unreachable because I am after a return statement")

print(give_10())  # give_10() returns 10 which makes the statement 
                  # as print(10). Which in turn processes the value and prints to stdout.

相关问题