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,在第二种情况下,代码块不返回任何内容,因此不打印任何内容