【发布时间】:2023-01-25 16:11:45
【问题描述】:
我一直在寻找在 python 中进行多行输入的解决方案。我找到了 this 使用以下代码的答案。
sentinel = '' # ends when this string is seen
for line in iter(input, sentinel):
pass # do things here
我从 python 文档中读到,如果 iter 收到第二个参数,那么它将调用第一个参数的 __next__()。但我认为 input 没有实现 __next__()(我无法通过文档或浏览源代码来验证这一点)。有人可以解释它是如何工作的吗?
此外,我通过以下代码观察到这种奇怪的行为。
sentinel = ''
itr = iter(input, sentinel)
print("Hello")
print(set(itr))
这是输出
[dvsingla Documents]$ python3 temp.py
Hello
lksfjal
falkja
aldfj
{' aldfj', 'falkja', 'lksfjal'}
[dvsingla Documents]$
打印后提示开始接受输入你好这不是逐行解释。
谢谢你的帮助
【问题讨论】:
-
我相信该代码中的
input不是内置的input函数。相反,有人为局部变量选择了一个不幸的名称,如input = "abcd"。 -
您是否尝试阅读
iter的文档? -
@zvone。不,那是输入功能好吧
-
@MadPhysicist 哦,那更糟 :D 在我看来,代码真的很丑。
-
@zvone。为什么?我认为如果你了解它的作用就好了
标签: python