Я знаю, как использовать оба, но мне любопытно, почему было принято решение сделать одно утверждение, а другое - функцией.
Почему "импортировать" выражение, но "перезагружать" функцию?
Ответ 1
Прежде всего, вы можете импортировать с помощью функции из документацию importlib:
Функция
__import__()
Операторimport
является синтаксическим сахаром для этой функции.
например, оба этих утверждения эквивалентны:
from random import randint as random_int
random_int = __import__("random").randint
Однако оператор import
значительно выигрывает от альтернативного синтаксиса, где reload
не имеет никакого альтернативного значения.
Я также могу представить много начинающих программистов, делающих эту ошибку, если перезагрузка была ее собственным выражением:
from random import *
reload random #does not affect the current namespace!
Так как для функции reload
требуется модуль (который не транслируется с помощью from _ import *
), кодеры могут задаться вопросом, почему импортированные имена не перезагружаются. связанные с этим ответом