python中常见的两种导包方式分别为下面一,二所示方式,但是这两种方式存在着本质上的不同
一。 import XX
二。 from xx import xx
之所以说两者有着本质上的不同是因为使用第二种方式导包实际上是发生了深拷贝
比如说现在有公共模块util.py,里面存放着公共变量num=10,
如果你使用第一种方式导出此模块中变量使用并更改了该变量,那么其他人在使用该变量的时候该变量的值也会变成更改后的值,
如果你使用的是第二种方式,那么你无论怎么样更改该变量,都不会影响其他人的使用
见代码
utils.py之定义变量
num = 10
a.py中
import utils
def change():
utils.num += 10
print(utils.num)
b.py中
import utils
def get():
print(utils.num)
c.py中
from a import *
from b import *
if __name__ == '__main__':
change()
get()
会输出什么结果,可以体验一下,然后把a。b中的导包方式换成另外一种方式,再看下结果
当然如果没有c.py的单独去运行a,b是不会有影响的