我在循环变量列表时遇到了一些问题。具体来说,我想编写一个函数来返回有关正在运行的系统的信息。下面是我试过的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给出了所有这些项目?
答案 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
就可以了。