"for x in sys.stdin" 究竟是做什么的?

What does "for x in sys.stdin" do exactly?

这里是一个简单的问题,但我找不到明确的答案。我正在编写一些 python 代码,但我对这一行的确切作用感到困惑:

a = []
for x in sys.stdin:
    c = x.split()
    a.extend(c)

当我运行它时,它默认制作一个单词列表,但这是为什么呢?为什么 python 默认为单词而不是行,甚至是标准输入中的字符?我知道 readlines 和 readline 方法,但我对这段代码对标准输入的作用感到困惑。

文件对象,包括 sys.stdin,是可迭代的。遍历文件对象会产生 ,因此该文件中的文本到下一个行分隔符。

它从不产生文字。您的代码会产生单词,因为您明确地拆分了每一行:

c = x.split()

str.split() 没有参数拆分 任意长度的空白序列 (从开头和结尾删除任何空白),有效地为您提供一个单词列表,这些单词是然后用 list.extend().

添加到 a 列表