import和from import二者的共同点:
1、都能导入模块的变量,类,方法
import和from import二者的不同点:
1、import导入是将模块的所有内容一次性导入
2、使用import导入,在使用的时候必须在前面加上模块名,而使用from import
导入的,则不需要加模块名
3、使用from import导入的时候,因为不需要在方法前加模块名,可能会出现一个问题,
假设模块A和B里面都有一个方法C,且B是在A之后导入的,那么我们在使用方法C的时候,
将会调用B的方法C,原因是A的C方法被B的C方法覆盖掉
下面我们将以代码示例:
这是testFun1模块
Num = 20;
def show1(str):
print('testFun1.show1:%s' % (str));
def show2(str):
print('testFun1.show2:%s' %(str));
class Testfun:
pass;
#_all的作用就是限制被导入的时候,哪些方法,变量,类可以被导入
#此处允许被导入的内容是show1,Num,Testfun,而show2则不允许被导入
__all__ =['show1','Num','Testfun'];
这是testFun2模块
def show1(str):
print('testFun2.show1:%s' % (str));
def show2(str):
print('testFun2.show2:%s' %(str));
这是testFun3模块
import testFun1;
from testFun2 import *;
t=testFun1.Testfun(); #用from导入的必须在方法前加上模块名称
print(testFun1.Num);
show2('test'); #此处的show2指的是testFun2的方法,因为在testFun1中
的__all__中并没有show2, 同时使用from导入的模块不需要加模块名