import导入模块

本文详细介绍了Python中如何使用import导入模块及其不同方式的区别。通过具体示例解释了直接导入模块与从模块导入所有内容(from...import *)时,多模块间属性引用可能出现的问题及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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应该就在模块导入的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值