Python:迭代变量列表

时间:2015-01-26 14:40:21

标签: python for-loop iteration

我在循环变量列表时遇到了一些问题。具体来说,我想编写一个函数来返回有关正在运行的系统的信息。下面是我试过的for循环的一个例子:

def sysInfo():
    cpu = psutil.cpu_count()
    memory = psutil.virtual_memory()
    disk = psutil.disk_usage('/')

    specs = [cpu, memory, disk]

    for c in specs:
       return c

print sysInfo()

该函数运行时没有错误,但只返回列表中的第一项,这使我得出结论,循环只执行一次。但是,如果我使用print切换return语句(并调用函数而不是打印它),那么列表中的所有项都会打印出来。

我的问题就变成了:为什么循环只给出列表中的第一个项目返回,但是print给出了所有这些项目?

5 个答案:

答案 0 :(得分:0)

拨打return一次后,您就无法回复"到功能 - 它完成了运行。

只需返回整个列表,并在必要时单独打印每个元素。

答案 1 :(得分:0)

return关键字会立即终止您的功能。在循环的第一次迭代中,当达到return语句时,您的函数将结束并返回c

您可以做的是返回整个列表,而不使用任何循环:

return specs

答案 2 :(得分:0)

它们是功能和方法。在python中我们以相同的方式定义它们,但它们不是。当您使用return语句时,您将中断循环并返回值。如果要返回整个列表,只需键入:

return specs

然后你调用变量:

sysInfo()[some_index]

好主意是改变回到dict:

return {"cpu": cpu, "memory":memory, "disk":disk}

然后你可以通过

调用变量
sysInfo()["cpu"]

答案 3 :(得分:0)

当您在函数中调用return时,该函数将结束其执行并返回给定值,如果调用None而没有返回值,则返回return

但为什么要使用for循环呢?你可以简单地写一下:

def sysInfo():
    cpu = psutil.cpu_count()
    memory = psutil.virtual_memory()
    disk = psutil.disk_usage('/')

    return cpu, memory, disk

print sysInfo()

答案 4 :(得分:0)

您对此问题的看法称为yield。但是在这种情况下,只需return specs就可以了。