在python中使用for循环迭代文本文件-为什么这样做?

在python中使用for循环迭代文本文件-为什么这样做?,python,loops,for-loop,text,Python,Loops,For Loop,Text,我目前正在学习如何用Python创建拼写检查器。在一些教程中,我看到如下内容: def ReadDictionaryFile(dictionaryfilename): dictionarywords = [] # stores words in a list inputfile = open(dictionaryfilename, "r") for line in inputfile:

我目前正在学习如何用Python创建拼写检查器。在一些教程中,我看到如下内容:


def ReadDictionaryFile(dictionaryfilename):
    dictionarywords = []                       # stores words in a list
    inputfile = open(dictionaryfilename, "r")

    for line in inputfile:                     # iterate over the lines of the file
        word = line.strip()                    # whitespace removed
        dictionarywords.append(word)           # appends word to the list
    inputfile.close()
    return dictionarywords
但我不明白python怎么知道把它分成几行

在inputfile:中的
行中,“line”只是一个变量,那么代码的哪一部分实际上告诉它在\n停止

python中是否有一些内置功能,用于循环遍历文本时在遇到下一次迭代时\n开始下一次迭代?我找不到关于这个的任何信息


感谢您的帮助

这是因为
open
返回的file对象在其特殊的“dunder”(双下划线)
\uuuuuu iter\uu
方法中实现了该行为。这是在
for
循环中隐式迭代对象时调用的方法

例如,考虑这个代码:

类行迭代器:
定义初始化(自我,内容):
self.contents=内容
定义(自我):
self.contents.splitlines()的收益率
它=行迭代器(““”您好
福巴
再见(“”)
对于其中的行:
打印(“行是”,repr(行))
这是打印出来的

The line was 'Hello'
The line was 'Foobar'
The line was 'Goodbye'
循环的
与显式版本完全相同:

国际热核实验堆(iter)线路的
:
打印(“行是”,repr(行))
或者是非常明确的版本:

用于其中的行。\uuuu iter\uuuuu()
打印(“行是”,repr(行))
原始版本,以及使用
iter(it)
的版本,只需调用
\uuuuu iter\uuuu
方法即可。标准库广泛使用此模式,您可以在自己的代码中使用它来使对象按需要运行


(从x产生的
基本上意味着“将每个元素x传递给循环”。

这是有效的,因为
open
返回的文件对象在其特殊的“dunder”(双下划线)方法中实现了该行为。这是在
for
循环中隐式迭代对象时调用的方法

例如,考虑这个代码:

类行迭代器:
定义初始化(自我,内容):
self.contents=内容
定义(自我):
self.contents.splitlines()的收益率
它=行迭代器(““”您好
福巴
再见(“”)
对于其中的行:
打印(“行是”,repr(行))
这是打印出来的

The line was 'Hello'
The line was 'Foobar'
The line was 'Goodbye'
循环的
与显式版本完全相同:

国际热核实验堆(iter)线路的
:
打印(“行是”,repr(行))
或者是非常明确的版本:

用于其中的行。\uuuu iter\uuuuu()
打印(“行是”,repr(行))
原始版本,以及使用
iter(it)
的版本,只需调用
\uuuuu iter\uuuu
方法即可。标准库广泛使用此模式,您可以在自己的代码中使用它来使对象按需要运行


(x的
屈服基本上意味着“将每个元素x传递到循环中”。

是的,它是一个内置功能。文件对象是迭代器是的,它是一个内置功能。文件对象是迭代器是特定的,文件对象不仅仅是iterable,它们是迭代器(因此它们实现了
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu next\uuuuuu
)是特定的,文件对象不仅仅是iterable,它们是迭代器(因此它们实现
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu