1. 问题由来
关于import和from import使用一直存在疑惑,这几天写爬虫,调用其他的文件,才知道接口可以利用from import实现,具体问题是这样的:
from datetime import datetime
print(datetime.now())
就可以执行,但是用import就不行:
import datetime
print(datetime.now())
报错:AttributeError: module ‘datetime’ has no attribute ‘now’
import datetime.datetime
print(datetime.now())
报错:ImportError: No module named ‘datetime.datetime’; ‘datetime’ is not a package
2. 具体解释
Python标准库中有些东西容易糊弄住我们这些刚刚接触python新手,比如你说的datetime模块,datetime模块中有一个与datetime.py文件同名的类
from module import Something
module是一个模块,说白了是一个文件,比如 datetime.py文件。
Something是模块的一个具体对象,可以是函数,可以是变量,可以是类。这点接口问题说的很直白。
3. 注意
一般情况下尽量使用import a,此时访问B时,可以通过a.B的形式。
有节制的使用from a import B,这样可以直接使用B。
避免使用from a import *,这种方法会污染命名空间,而且不能直观的显示导入哪些对象
4. 知乎完美回答
说的清晰明了,233333
你有一个工具箱,箱子里有剪刀,有钳子,有螺丝刀等等。
现在你想拧螺丝。然后你一个操作是:从 工具箱 里拿 螺丝刀,然后用 螺丝刀 去拧螺丝 ( from import)。别一个操作是: 拿了 工具箱 ,没打开呢,直接就去 拧螺丝 ( import )。