第七章 Python系统模块 01-模块和包

本文介绍了Python中的模块概念,包括系统模块、自定义模块和第三方模块。重点讲解了如何使用pip下载和管理第三方模块,如更换国内源以加速下载,并提供了常见国内镜像站的URL。此外,还讨论了模块间的调用方式以及包的组织结构,强调了_init_.py在包中的作用。

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

模块和包

1. 模块

所谓的“模块”,其实就是指的py文件!模块之间是可以互相调用的!

在Python中,模块分为三种:

  • 系统模块:Python环境安装完成之后自带的py文件或者包
  • 自定义模块:就是我们自己写的py文件
  • 第三方模块:其他人写好的,上传到 pypi.org 上面,可以下载下来使用的模块

2. 第三方模块下载

下载第三方模块最简单的方式,就是使用 pip 工具来下载。我们在安装Python环境的时候,pip命令已经安装完成了。

在Windows平台上,python解释器的命令就是python,pip工具的命令就是pip。

在mac平台上,python解释器的命令就是python3,pip工具的命令就是pip3。

2.1. 替换国内源

pip可以去搜索和下载仓库中的第三方的模块,但是这些仓库在远端,使用到的是国外的镜像仓库,有些第三方模块在下载的时候可能会比较慢。因此在实际的使用中,我们经常会将镜像源替换成国内的源。

常见的国内的镜像有:

阿里云:http://mirrors.aliyun.com/pypi/simple/

清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/

中国科学技术大学:http://pypi.mirrors.ustc.edu.cn/simple/

百度:https://mirror.baidu.com/pypi

豆瓣:http://pypi.douban.com/simple/

如果我们在下载第三方模块的时候,临时指定使用指定的源进行下载,可以这样做:

# 指定阿里云的源,下载PyMySQL
pip install -i http://mirrors.aliyun.com/pypi/simple PyMySQL

但是每一次都这样去指定源下载,会非常的麻烦。那么能不能一劳永逸的解决问题?此时我们可以修改配置文件来达到这个效果。

  • Windows:
    • 需要修改的文件是:C:\Users\{当前用户}\AppData\Roaming\pip\pip.ini,如果没有这个文件,就手动创建一下。
  • macOS、Linux:
    • 需要修改的文件是:~/.pip/pip.info

写入如下内容,并保存

[global]
	index-url=http://mirrors.aliyun.com/pypi/simple
	trusted-host=mirrors.aliyun.com

2.2. pip常用命令

# 查看版本
pip --version

# 安装指定的包
pip install PyMySQL				# 安装PyMySQL的最新版本
pip install PyMySQL==1.0.4		# 安装PyMySQL的指定版本

# 升级包
pip install --upgrade PyMySQL	# 升级PyMySQL,也可以使用==指定版本号

# 卸载包
pip uninstall PyMySQL			# 卸载PyMySQL

# 列出已经安装的包
pip list

# 显示安装包的信息
pip show PyMySQL

# 查看指定安装包的详细信息
pip show -f PyMySQL

2.3. 模块之间的互相调用

模块之间是可以互相调用的,在使用之前要先引入指定的模块。引入的语法有三种:

# 1. 使用模块中的内容的时候,需要使用 模块名.内容
import 模块名

# 2. 使用内容的时候,直接操作即可
from 模块名 import 内容1, 内容2

# 3. 引入模块中的所有内容,需要注意的是如果模块下使用了 __all__规定了对外够哦那个开的内容,那么只能够引入这些内容
from 模块名 import *
# my.py
__all__ = ['test_method']
class NumberTool:
    @staticmethod
    def add(*args):
        s = 0
        for n in args:
            s += n
        return s


def test_method():
    print("test_method")
    

# use1.py
import my
print(my.NumberTool.add(10, 20, 30))		# 需要使用 模块.内容 的方式来访问
print(my.test_method())


# use2.py
from my import NumberTool
print(NumberTool.add(10, 20, 30))			# 可以直接使用内容来访问
# test_method()								# 这个函数是访问不到的


# use3.py
from my import *
test_method()								# 直接访问,但是只能访问到 __all__ 中定义的部分

3. 包

一个py文件就是一个模块,那么将多个具有相关联的功能的模块组织到一起,就是一个。其实包和目录的功能类似,都可以将若干个功能相似的模块组织到一起,我们在使用到这些模块的时候,就可以直接通过这样的目录结构,找到对应的模块来使用。

包和文件夹的区别,目前也就是包下会有一个 _init_.py 的文件了。

可以理解为,包含 _init_.py 的文件夹就是包,不包含的就是普通的文件夹。

在Python2的版本中,没有_init_.py的时候,是无法导入这个包下的模块中的内容的。

但是Python3中已经不限制了,有没有_init_.py都可以正常导入包下的模块中的内容。

那么,这个_init_.py文件是干嘛的?

其实现在就只有一个预加载的作用了。我们在导入一个包的时候,会先执行这个包下的_init_.py文件中的代码。因此我们就可以在这个文件中进行一些预处理操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值