十五、Python模块 2、(导入,import用法)「长期更新Python简单入门到适用」

在python进行编程时,有些功能可以借助python现在有的标准库或者其他人提供的第三方库,比如余弦函数 cos()、绝对值函数 fabs() 等,它们位于 Python 标准库中的 math(或 cmath)模块中,只需要将此模块导入到当前程序,就可以直接拿来用。

1:import模块1[as 别名1],模块名2[as别名2]....:使用这种语法格式的import语句,会导入指定模块中的所有成员(包括变量、函数、类等)。不仅如此,当需要使用模块中的成员是,需要该模块名(或别名)作为前缀,否则python解释器会报错。

2:form模块名import成员名1[as别名1],成员名2[as 别名2]....:使用这种语法格式的import语句,只会导入模块中指定的成员,而不是全部成员。同时,当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。

括号()括起来的部分可以使用,也可以省略

其中,第二种 import 语句也可以导入指定模块中的所有成员,即使用 form 模块名 import *,但此方式不推荐使用,具体原因后续会做详细说明。

1、import模块名as别名:

程序使用导入整个模块的最简单语法来导入指定模块:

第 2 行代码使用最简单的方式导入了 sys 模块,因此在程序中使用 sys 模块内的成员时,必须添加模块名作为前缀。输出后得到的是这个文件的路径

也可以一次导入多个模块,多个模块之间用逗号隔开。

第一行代码一次导入了sys跟os两个模块,因此程序要使用sys、os两个模块内的成员,只要分别使用sys、os模块作为前缀即可。输出结果中的os模块和sep模块代表平台上的路径分隔符:

在导入多个模块的同时,也可以为模块指定别名,方法如下:

 一次导入了sys跟os两个模块,并分别为它们指定别名s跟o,因此过程可以通过s,o两个前缀来使用,sys、os 两个模块内的成员

2、form模块名import成员名as别名:

使用from加import简单语法导入指定成员:

导入了 sys 模块中的 argv 成员,这样即可在程序中直接使用 argv 成员,无须使用任何前缀。运行该程序

form 加 import 导入模块成员时,支持一次导入多个成员

导入了 sys 模块中的 argv、winver 成员,并分别为它们指定了别名 v、wv,这样即可在程序中通过 v 和 wv 两个别名使用 argv、winver 成员,无须使用任何前缀。

3、不推荐使用 from import 导入模块所有成员:

在使用 from...import 语法时,可以一次导入指定模块内的所有成员(此方式不推荐)

需要说明的是,一般不推荐使用“from 模块 import”这种语法导入指定模块内的所有成员,因为它存在潜在的风险。比如同时导入 module1 和 module2 内的所有成员,假如这两个模块内都有一个 foo() 函数那么调用的这个 foo() 函数到底是 module1 模块中的还是 module2 模块中的?因此,这种导入指定模块内所有成员的用法是有风险的。

但如果换成如下两种导入方式:

import module1
import module2 as m2

接下来要分别调用这两个模块中的 foo() 函数就非常清晰。程序可使用如下代码:

#使用模块module1 的模块名作为前缀调用foo()函数
module1.foo()
#使用module2 的模块别名作为前缀调用foo()函数
m2.foo()

或者使用 from...import 语句也是可以的:

#导入module1 中的foo 成员,并指定其别名为foo1
from module1 import foo as fool
#导入module2 中的foo 成员,并指定其别名为foo2
from module2 import foo as foo2

此时通过别名将 module1 和 module2 两个模块中的 foo 函数很好地进行了区分,接下来分别调用两个模块中 foo() 函数就很清晰: 

foo1() #调用module1 中的foo()函数
foo2() #调用module2 中的foo()函数

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是collections模块? collections是Python内置模块之一,提供了一些有用的集合类,可以用来扩展Python内置类型的功能。 2. collections模块中常用的几个类有哪些? 常用的集合类包括:Counter、deque、defaultdict、OrderedDict、namedtuple等。 3. Counter类有什么作用? Counter类可以帮助我们统计一个可迭代对象中各元素出现的次数,并返回一个字典。 4. deque类有什么特点? deque类是双向队列,可以从两端进行操作,支持高效地添加、删除和旋转元素等操作。 5. defaultdict类与普通字典有什么区别? defaultdict类与普通字典的区别在于,当我们访问一个不存在的键时,defaultdict会自动为其创建一个默认值,而不是抛出KeyError异常。 6. OrderedDict类有什么特点? OrderedDict类是有序字典,可以按照元素添加的顺序进行遍历,而普通字典是无序的。 7. namedtuple类有什么作用? namedtuple类可以用来创建一个具名元组,具有元组的不可变性和字典的可访问性和可读性。 8. 如何使用collections模块中的类? 我们可以使用类似于以下的方式导入collections模块中的类,并使用其提供的方法和属性。 ```python from collections import Counter, deque, defaultdict, OrderedDict, namedtuple # 使用Counter类 c = Counter('hello world') print(c) # 使用deque类 d = deque([1, 2, 3]) d.appendleft(0) d.rotate(1) print(d) # 使用defaultdict类 dd = defaultdict(int) dd['a'] += 1 print(dd) # 使用OrderedDict类 od = OrderedDict() od['b'] = 1 od['a'] = 2 print(od) # 使用namedtuple类 Point = namedtuple('Point', ['x', 'y']) p = Point(1, 2) print(p.x, p.y) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值