import导入模块

使用import 导入模块时,系统做了以下几步:

1.导入import后面紧跟的模块

2.将后面的名字指向该模块

例如:import os

系统先是导入了os.py文件,然后将os指向了os.py文件,然后就可以用os.函数名来访问os.py里面的函数和属性

使用import导入模块有几种方式:

1.import 模块名

  推荐使用方式,尽管调用模块内的属性和函数时会麻烦一点,但避免了多模块导入时,修改属性导致的混乱。

2.from 模块名 import * 

3.from 模块名 as 别名

接下来聊聊前面说的多模块导入时容易导致的模块内属性的混乱

  这是第一个文件test1.py

  a = 10

  这是第二个文件test2.py

  import test1

  test1.a = 20

  这是第三个文件test3.py

  import test1

  import test2

  print(test1.a)

  看起来似乎跟test2.py没有什么关系,但实际上是有关系的,最后输出的结果是20,并不是test1.py里的10。这其中的原因是导入test2.py时,test2.py对test1.py中的属性进行修改,在test3.py中产生了影响,影响的结果就是调用test1.a时,显示的是修改过的属性。但是如果将test3.py的第一行改为from test1 import *,此时调用test1中的属性a时,就不能用test1.a,而是用a,此时的结果就变成了10.

  上述结果看似没有什么用处,但实际上意义很大,因为实际开发中,会经常使用多模块同时导入,加入我们在test1.py中放的是数据,test2.py中存放处理数据的方法,然后需要在test3.py中使用处理后的数据,此时如果使用from 模块名 import * 这种方法导入就会产生一种错觉:明明处理过数据,但程序运行结果却是未经处理的数据,此时bug应该就在模块导入的地方。

猜你喜欢

转载自blog.csdn.net/qq_42626060/article/details/81142021
今日推荐