之前一直对这块一知半解,但看了知乎的解释 https://www.zhihu.com/question/38857862/answer/90981260,清楚多了
小小总结一下
1. import Module: 将整个模块全部导入文件中,使用该方法时,里面的函数可以尽情使用,但调用方法是 模块名.函数名()
import Module Module.func()
2. from Module import func: 只导入某个函数,直接调用函数名()就可以
from Module import func func()
3. from Module import *: 依旧将整个模块导入,但调用方式直接是 函数名()
from Module import * func()
区别就是如果喜欢代码指明这个方法从哪个模块来,就只用import,看起来更容易理解
如果想让代码看起来简单,就用import from,这样就不用前缀模块名,代码也看起来更清爽
知乎里面的问题是为啥用from import可以调用now(),而只用import 不能调用now()
from datetime import datetime print(datetime.now())
2018-06-29 10:17:18.199460
这样用会报错,AttributeError: module 'datetime' has no attribute 'now'
import datetime print(datetime.now())
AttributeError: module 'datetime' has no attribute 'now'
里面的解释很清楚
from datetime import datetime
这行命令相当于,校长说:高三二班的 李伟出来,站在我面前
而import datetime
这行命令相当于,校长说:高三二班,都站在我面前
from datetime import datetime 中 调用 datetime.now() 成功是因为:
这个命令相当于,校长说:: 李伟,现在是几点? 因为就一个李伟站在他面前,能确定是哪个李伟。
import datetime 调用 datetime.now() 失败是因为:
这个命令相当于,校长说:: 李伟,现在是几点? 可是校长面前,站了整个高三二班,没法知道是哪个李伟??