Какие уловки при импорте модулей? - PullRequest
0 голосов
/ 21 июня 2020

Я работаю над проектом django. В views.py я вызвал функцию из custom.py. Проблема в том, что он работает хорошо. Но я не писал что-то вроде:

from .custom import *

или

import custom

В предложении нет слова «custom» нигде в views.py.

  1. Почему работает? Есть ли другой способ импортировать модуль, о котором я не знаю? Что это такое?
  2. Или какой-нибудь трюк django?

дополнение:

  1. Custom.py также не импортировал views.py
  2. custom.py импортировал models.py

1 Ответ

0 голосов
/ 21 июня 2020

Возможно, ваш views.py файл импортируется из другого модуля, который импортирует используемую вами функцию.

models.py

from .custom import my_function

views.py

from .models import *

# my_function will be available

Это происходит потому, что оператор import * импортирует все функции и классы, включая все, что уже было импортировано в этот модуль. Некоторая информация об этом содержится в python docs .

Вы можете избежать этого, только импортировав определенные c функции и классы, которые вам нужны, например:

views.py

from .models import PersonModel, ProductModel
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...