详解Python中的import的用法

Python用了快两年了吧,其中有些东西一直是稀里糊涂地用,import便是我一直没有明白的东西。曾经有过三次解决它的机会,我都因得过且过、一拖再拖而没能化敌为友。今天下午,它又给了我一次机会,我想我还是从了它的心愿吧。

故事是从这篇台湾同胞的博客《Python的import陷阱》[1](网址见底部)开始的,然后又跳到了Python社区的PEP 328提案[2],再结合过去的经验以及一些测试,我想我大概懂了吧。下面是我的总结,希望内容能够言简意赅、易于理解。

import语句有什么用?import语句用来导入其他python文件(称为模块module),使用该模块里定义的类、方法或者变量,从而达到代码复用的目的。为了方便说明,我们用实例来说明import的用法,读者朋友可以跟着尝试(尝试时建议使用python3,python2和python3在import的表现有差异,之后会提到)。

首先,先建立一个文件夹Tree作为工作目录,并在其内建立两个文件m1.py和m2.py,在m1.py写入代码:

import os
import m2
m2.printSelf()

在m2.py写入代码:

def printSelf():
	print('In m2')

打开命令行,进入到Tree目录下,敲下python m1.py运行,发现没有报错,且打印出In m2,说明这样使用import没有问题。

由此我们总结出import语句的第一种用法:import module_name

即import后直接接模块名。在这种情况下,Python会在两个地方寻找这个模块,第一是sys.path(通过运行代码import sys; print(sys.path)查看),os这个模块所在的目录就在列表sys.path中,一般安装的Python库的目录都可以在sys.path中找到(前提是要将Python的安装目录添加到电脑的环境变量),所以对于安装好的库,我们直接import即可。第二个地方就是运行文件(这里是m1.py)所在的目录,因为m2.py和运行文件在同一目录下,所以上述写法没有问题。

用上述方法导入原有的sys.path中的库没有问题。但是,最好不要用上述方法导入同目录下的文件!因为这可能会出错。演示这个错误需要用到import语句的第二种写法,所以先来学一学import的第二种写法。在Tree目录下新建一个目录Branch,在Branch中新建文件m3.py,m3.py的内容如下:

def printSe
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
collections是Python内置库的一个模块,它提供了一些有用的类,用于处理Python的集合类型。这些类包括:Counter、defaultdict、deque、namedtuple等。 1. Counter类 Counter类是一个用于计数的容器,它可以统计元素出现的次数。可以使用它来创建一个字典,其字典的键是元素,值是元素的数量。Counter类的用法如下: ```python from collections import Counter # 创建一个Counter对象 c = Counter(['a', 'b', 'c', 'a', 'b', 'a']) # 统计元素出现的次数 print(c) # Counter({'a': 3, 'b': 2, 'c': 1}) # 统计前n个出现次数最多的元素 print(c.most_common(2)) # [('a', 3), ('b', 2)] ``` 2. defaultdict类 defaultdict类是一个字典类型,它可以自动为不存在的键分配一个默认值。当使用一个不存在的键时,它会自动创建一个默认值,并返回它。defaultdict类的用法如下: ```python from collections import defaultdict # 创建一个defaultdict对象 d = defaultdict(int) # 添加键值对 d['a'] = 1 d['b'] = 2 # 访问不存在的键 print(d['c']) # 0 ``` 3. deque类 deque类是一个双向队列,它可以在队列的两端进行插入和删除操作。deque类的用法如下: ```python from collections import deque # 创建一个deque对象 d = deque() # 在队列的左边插入元素 d.appendleft(1) d.appendleft(2) # 在队列的右边插入元素 d.append(3) d.append(4) # 访问队列的元素 print(d) # deque([2, 1, 3, 4]) # 从队列的左边删除元素 print(d.popleft()) # 2 # 从队列的右边删除元素 print(d.pop()) # 4 ``` 4. namedtuple类 namedtuple类是一个工厂函数,它可以用来创建一个具有字段名的元组。该类返回的是一个元组子类,它可以像普通元组一样访问元素,但也可以使用字段名来访问元素。namedtuple类的用法如下: ```python from collections import namedtuple # 定义一个namedtuple类型 Point = namedtuple('Point', ['x', 'y']) # 创建一个Point对象 p = Point(1, 2) # 访问元素 print(p.x) # 1 print(p.y) # 2 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值