2016-11-01 121 views
-2
1. from wtforms import StringField, PasswordField 
    2. from wtforms.validators import (DataRequired, Regexp, Email, ValidationError) 

第一行可能意味着(如果我錯了,請糾正我)存在文件名wtforms.py,其中定義了類StringField和PasswordField。 但我無法理解第二行意味着什麼。這是否意味着有一個文件夾名稱爲「wtforms」,其中有validators.py,其中包含類DataRequired,Regexp和所有類?如果是,python解釋器如何區分「wtform」文件夾和「wtform.py」文件?在Python中導入文件

+0

是的,'wtforms'包中有一個'validators'包。爲什麼不看?至於它如何在名稱空間中將名稱分開,它不會:如果您有一個文件和一個名稱相同的包,則會加載一個文件並且會被忽略。 – davidism

回答

3

你的第一個假設是不正確的。可能有一個名爲wtforms.py的文件,但它可能是用C語言編寫的.pyd文件,或者它可能是-目錄或「文件夾」。

對於包(目錄),它將在目錄本身中執行一個名爲__init__.py的文件(在Python 3中允許有這種情況例外)。

同樣,在第二假設中,存在可能被稱爲在wtforms目錄validators.py文件,但同樣可以被編譯.pyd文件,甚至子目錄。大目錄層次結構是可能的,你不能做出假設。

+0

感謝您的評論,cdarke!但我仍然沒有得到我的答案。這是一個來自Flask項目的有效代碼片段。你能解釋一下進口是如何發生的(在這種情況下)? – Utkarsh

+0

嗯,我得到了我的答案!我自己查了目錄。謝謝你的一切。 :) – Utkarsh