Python 通过for循环返回函数值在多次迭代中不起作用

Python 通过for循环返回函数值在多次迭代中不起作用,python,return,Python,Return,我定义了以下函数: def test(): return 1 一旦我在控制台中键入以下内容: test() values = [1,2] for i in values: test() 我得到了返回的预期值1。但是我想返回两次1,所以我在控制台中键入: test() values = [1,2] for i in values: test() 但是我现在没有得到任何输出。为什么它不产生任何输出?我如何编辑它,使其产生输出?实际上,您需要打印返回值,以便在控制台中

我定义了以下函数:

def test():
    return 1
一旦我在控制台中键入以下内容:

test()
values = [1,2]
for i in values:
    test()
我得到了返回的预期值1。但是我想返回两次1,所以我在控制台中键入:

test()
values = [1,2]
for i in values:
    test()

但是我现在没有得到任何输出。为什么它不产生任何输出?我如何编辑它,使其产生输出?

实际上,您需要打印返回值,以便在控制台中显示它。试试这个:

value=[1,2]
对于我而言,价值观:
打印(test())
你可能会问,为什么它在第一种情况下起作用。我没有确切的答案,但我可以给你一个线索。“最后一行代码”的返回值将自动打印。这不是正确的/好的解释。也许其他人能帮上忙

顺便说一句,以下是编写上述代码的更好方法:

范围(2)内的i的
:
打印(test())

首先,您应该修复for循环。如果要指定for循环应运行的次数,应使用range()函数

for x in range(2):
    test()
其次,除非打印返回值,否则返回值不会输出值,即
print(test())
只需在for循环内的test()上打印,如下所示

for i in values:
    print(test())
现在的输出是:

   1
   1


我不知道为什么它对你不起作用,但是当我在我的计算机上运行这个代码时,一切都很好

def test():
    return 1

print("First case:")
print(test())

print("Second case:")
list = [1,2]
for i in list:
    print(test())  
输出:

First case:
1
Second case:
1
1

正如其他答案所指出的,在循环中执行
print
将打印值。其他人都没有提到的微妙之处是for循环本身不工作的原因是
for
不返回值。循环内的表达式将被计算,但其值将被丢弃

如果要执行一个确实返回其中表达式值的循环(这样您就可以在解释器中看到这些值,而无需打印它们,或者在程序的下一部分中使用这些值执行其他操作),列表理解是一种很好的方法:

>>> def test():
...     return 1
...
>>> values = [1,2]
>>> [test() for i in values]
[1, 1]

打印(test())
?如果您在REPL(如解释器)中工作,则输出仅显示表达式或显式
print
s。在第一种情况下,REPL打印返回值1,在第二种情况下,代码块不返回任何内容,因此不打印任何内容