[Python] Import 与 Import from 区别

之前一直对这块一知半解,但看了知乎的解释 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() 失败是因为:

这个命令相当于,校长说:: 李伟,现在是几点? 可是校长面前,站了整个高三二班,没法知道是哪个李伟??

猜你喜欢

转载自www.cnblogs.com/FiaFia/p/9242110.html