#python
#python
Вопрос:
Я не был уверен, как сформулировать этот вопрос. Поэтому я прошу прощения за путаницу.
Я новичок в Python, поэтому позвольте мне объяснить вопрос: итак, из другого файла используется словарь с именем FEATURES . Это использование:
if (feature_name, dataset_id) in FEATURES.keys():
...
...
В другом файле ФУНКЦИИ определяются следующим образом:
FEATURES = populate_features()
Итак, мой вопрос: когда FEATURES.keys() используется в первом файле, будет ли сначала вызываться populate_features() для заполнения словаря? или ФУНКЦИИ будут пустым словарем, поскольку функция populate_features() не была вызвана?
Примечание: poplulate_features() заполняет словарь. Поэтому, если бы он не был вызван, ФУНКЦИИ были бы пустым словарем.
Комментарии:
1. Пока вы импортируете
FEATURES
из другого файла, вы можете ожидатьpopulate_features
, что он будет вызван2. Я действительно не слишком бойкий. Почему вы спрашиваете StackOverflow, когда вы могли бы просто попробовать это самостоятельно и посмотреть, что произойдет?
3. Не используйте
in FEATURES.keys()
, простоin FEATURES
.
Ответ №1:
Когда вы import
загружаете файл, выполняется весь его код.
foo = ["f", "o", "o"]
def foobar():
print("foobar")
В приведенном выше примере foo
переменная инициализируется, но foobar
ничего не выводит, поскольку функция только что определена, но не вызывается.
Для вашего примера ваш FEATURES
инициализируется import
, так что задолго до того, как вы его используете.
Это также причина, по которой я настоятельно рекомендую не делать много вещей при инициализации переменных, таких как подключение к серверам, чтение файлов конфигурации или тому подобное. Поскольку такие вещи происходят во время импорта, это может затруднить тестирование.