当我不使用print时,为什么Python在循环体中打印一个值?

2024-09-30 14:33:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道the Python interpreter is a REPL。。。但在循环中,循环的“值”必须是单值的。。。对的但我看到了这一点(在Python 2.7.18和3.8.5中都使用range而不是xrange进行了测试):

>>> for _ in xrange(5):
...   3
...
3
3
3
3
3

这种行为在Python中记录在哪里?

在被调用函数中,它似乎被抑制:

>>> def foo(x):
...   1
...   x
...   return x+1
...
>>> foo(5)
6
>>> def bar(n):
...   for x in xrange(5):
...     1
...     x
...   return n+1
...
>>> bar(5)
6
>>> for x in xrange(5):
...   1
...   x
...
1
0
1
1
1
2
1
3
1
4

给下层选民注意:这不是一个明显的行为与Javascript的对比:

> for (var i = 0; i < 5; ++i) {
    i
}
4

Tags: theinforreturnfooisdef记录
3条回答

不是循环的“值”导致显示3。它是解释器在循环的每次迭代中计算3.__repr__()的结果

例如,如果您改为计算i,您将得到以下结果

for i in range(5):
   i
# 0
# 1
# 2
# 3
# 4

如果希望for循环不显示任何内容,则需要确保在解释器中求值时循环中的所有语句都不会打印任何内容。这种说法的一个例子是

for i in range(5):
    _ = None

for循环没有“最终值”(与javascript示例不同)的原因是,在Python中for循环是语句,而Python中的语句没有值

你混淆了抽象的层次。每一句话都有它的价值。在循环的情况下,将行3解释五次,从而返回五个非空结果。交互式解释器每次打印该值

要更清楚地看到它,请更改表达式:

for i in range(5):
    i

解释器将打印出您刚刚输入的任何变量

这只是一个方便的功能

如果您在解释器中键入“3”,它也会打印出“3”

相关问题 更多 >