2016-11-01 2 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, но это может быть файл .pyd, написанный на C, или это может быть пакет - каталог или «папка».

В случае пакета (каталога) он выполнит файл с именем __init__.py в самом каталоге (есть исключения из этого разрешены в Python 3).

Опять же, во втором предположении, то может быть файл с именем validators.py в каталоге wtforms, но опять же это может быть составлен .pyd файл, или даже подкаталог. Возможны большие иерархии каталогов, вы не можете делать предположения.

+0

Спасибо за ваши комментарии, cdarke! Но я еще не получил ответа. Это действительный фрагмент кода из проекта Flask. Не могли бы вы объяснить, как происходит импорт (в данном случае)? – Utkarsh

+0

Ну, я получил свой ответ! Я сам проверил каталоги. Спасибо за все. :) – Utkarsh

Смежные вопросы