Python:遍历变量列表

Python: Iterate over list of variables

我在遍历变量列表时遇到了一些问题。具体来说,我想编写一个 return 关于 运行 系统的信息的函数。下面是我尝试过的 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()

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

然后我的问题就变成了:为什么循环只给出列表中带有 return 的第一项,而打印却给出了所有项?

一旦你调用 return 一次,你就不能 "go back" 函数 - 它完成 运行.

只是 return 整个列表,并在必要时单独打印每个元素。

return 关键字将使您的函数立即结束。在循环的第一次迭代中,当到达 return 语句时,您的函数将结束并且 c 将被 returned.

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

return specs

它们是函数和方法。在 python 中,我们以相同的方式定义它们,但它们不是。当您使用 return 语句时,您会中断循环和 return 值。如果你想要 return 整个列表,你可以输入:

return specs

然后调用变量:

sysInfo()[some_index]

好主意是将 return 改为字典:

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

然后你可以通过

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

当您在函数中调用 return 时,函数将结束执行并 return 给定值或 None 如果调用 return 时没有 return值。

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

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

    return cpu, memory, disk

print sysInfo()

你对这个问题的看法叫做yield。但是,在这种情况下,只是 return specs 为了您好。