对不少 Python 初学者来说,Python 导入其他模块的方式让他们很难理解。什么时候用import xxx?什么时候用from xxx import yyy?什么时候用from xxx.yyy import zzz?什么时候用from xxx import *?
这篇文章,我们来彻底搞懂这个问题。
系统自带的模块
以正则表达式模块为例,我们经常这样写代码:
import retarget = 'abc1234xyz're.search('(d+)', target)
但有时候,你可能会看到某些人这样写代码:
from re import searchtarget = 'abc1234xyz'search('(d+)', target)
那么这两种导入方式有什么区别呢?
我们分别使用type函数来看看他们的类型:
>>> import re>>> type(re)>>> from re import search>>> type(search)
如下图所示:
可以看到,直接使用import re导入的re它是一个module类,也就是模块。我们把它成为正则表达式模块。而当我们from re import search时,这个search是一个function类,我们称呼它为search 函数。
一个模块里面可以包含多个函数。
如果在你的代码里面,你已经确定只使用search函数,不会再使用正则表达式里面的其他函数了,那么你使用两种方法都可以,没什么区别。
但是,如果你要使用正则