2014-07-26 21 views
0

我正在運行Python 2.7.3。在Xubuntu上。我的問題是對「for」循環的解釋請求。我正在閱讀很多不同的解釋,但我仍然不理解爲什麼for循環的工作方式(特別是在下面的示例中)。 我正在使用一個簡單的代碼作爲例子。代碼計算行數。Python 2.7 For循環的說明

我用電子郵件列表和其他信息打開了一個.txt文件(這裏是:http://www.py4inf.com/code/mbox-short.txt),我對以「From:」開頭的部分感興趣。

for line in fhand: 
if line.startswith ("From:"): 
    print line 

我想我明白,我可以把這種循環是一種對於每一個對象的「部分/ X /線」「fhand」做如下:如果行啓動以「從」,打印線。

我的困惑是,我基本上可以輸入一個「x」而不是線或我想要的任何東西,它仍然可以正常工作。 for循環如何理解我希望它只計算行數?這裏的「可數」部分是什麼?我怎麼能想象它?基本上我想更深入地理解爲什麼下面的代碼可以工作,因爲我相信它可以幫助我在未來構建其他類似的代碼。

感謝您爲解答此問題所付出的努力。

+0

線只是一個變量名。你可以把幾乎每個你想要的名字用於變量。你應該爲初學者閱讀一些書。 – miindlek

+0

不管你稱之爲變量。它不像「如果它被稱爲」名稱「,讓我們返回行,如果它被稱爲字符,讓我們返回字符」。文件對象是行的迭代器,所以它就是迭代器。期。 –

回答

0

fhand是字符串的iterable object

line因此是該對象中的單個字符串成員。

無論你喜歡什麼,你都可以命名它,它仍然被視爲一個字符串。

+0

'fHand'不僅僅是一個文件對象。 –

+0

@PadraicCunningham:是的,更新到一般情況。 –

+0

我剛剛注意到在OP的問題「我打開了一個帶有電子郵件列表和其他信息的.txt文件」:) –

0

fhand是一個數組/列表/集合/文件處理程序/任何可迭代項目 - 它並不重要,但它是它們的集合。

如果它是一個文件處理程序,讀取時的文件通常是逐行讀取的,因此爲什麼for循環在每行的基礎上工作。

for循環基本上是「列表中的每個事物」。我認爲,「線」變量是什麼扔你。這可能被命名爲任何東西......例如: -

for x in fhand: 
    if x.startswith("From"): 
     print x 

「行」只是一個變量,它沒有任何的軸承就如何代碼工作,它只是一個友好的命名標識。