Использование «импорт» против «из X импорта» - PullRequest
0 голосов
/ 12 июня 2018

Я работаю через Head First Python, и есть пример:

from datetime import datetime

odds = [  1,  3,  5,  7,  9, 11, 13, 15, 17, 19,
     21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
     41, 43, 45, 47, 49, 51, 53, 55, 57, 59 ]

right_this_minute = datetime.today().minute

#if right_this_minute in odds:
    #print("This minute seems a little odd.")
#else:
    #print("Not an odd minute.")

Теперь, если я заменю «import datetime» на «from datetime import datetime», интерпретатор выдаст мне ошибку:

right_this_minute = datetime.today (). Minute AttributeError: модуль «datetime» не имеет атрибута «today»

Я не понимаю, почему «из импорта datetimedatetime "работает, а" import datetime "- нет.Я прошел через несколько вопросов и ответов по поводу переполнения стека, но мне явно чего-то не хватает.

Любые предложения будут с благодарностью приняты.

1 Ответ

0 голосов
/ 12 июня 2018

Прежде всего, есть две «вещи», называемые datetime: модуль и класс, определяемый модулем.

Два используемых вами варианта импорта имеют различное поведение.

При запуске:

from datetime import datetime

первый - это модуль, второй - это класс.Python импортирует только один класс (datetime) из модуля.С этого момента Python будет понимать datetime для обозначения класса.

Когда вы запускаете:

import datetime

, вы импортируете весь модуль, поэтому Python понимает, что datetime будетмодуль.Чтобы получить доступ к классу datetime, вам необходимо использовать datetime.datetime.

...