轩小陌的Python笔记-day14 自定义模块、第三方模块、内置模块(部分)

本文介绍了Python中的模块概念,包括自定义模块、第三方模块和内置模块的使用。重点讲解了模块的导入方式,如import和from...import...,以及如何使用pip安装和管理第三方模块。此外,还提到了Python内置的os、shutil、sys等常用模块。

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

day14 模块

在这里插入图片描述

课程目标:掌握Python中常用模块的使用方法。

今日概要:

  • 自定义模块(包)
  • 第三方模块
  • 内置模块【1/2】

1. 自定义模块

1.1 模块和包

import hashlib


def encrypt(data):
    """ 数据加密 """
    hash_object = hashlib.md5()
    hash_object.update(data.encode('utf-8'))
    return hash_object.hexdigest()


user = input("请输入用户名:")
pwd = input("请输入密码:")
md5_password = encrypt(pwd)

message = "用户名:{},密码:{}".format(user, md5_password)
print(message)

在开发简单的程序时,使用一个py文件就可以完成,但如果程序比较庞大,此时为了代码结构清晰,将功能按照某种规则拆分到不同的py文件中,使用时再去导入即可。另外,当其他项目也需要此项目的某些模块时,也可以直接进行调用,增加重用性。

如果按照某个规则进行拆分,发现拆分到 commons.py 中函数仍然太多,也可以通过文件夹来进行再次拆分,例如:

├── commons
│   ├── convert.py
│   ├── page.py
│   └── utils.py
└── run.py

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pAfNFp3t-1648881373964)(assets/image-20220401205537647.png)]

在Python中一般对文件和文件夹的称呼:

  • 一个py文件:模块(module)。
  • 含多个py文件的文件夹:包(package)。

注意:在包(文件夹)中有一个默认内容为空的__init__.py的文件,一般用于描述当前包的信息,另外,在导入它下面的模块时,__init__.py也会自动加载。

  • Python2 中必须要有__init__.py文件,否则将无法正常导入包。
  • Python3 中__init__.py文件可有可无。

1.2 导入

当定义好一个模块或包之后,如果想要使用其中定义的功能,必须要先导入,才能使用。

导入,其实就是将模块或包加载的内存中,以后再去内存中去取。

1.2.1 关于导入模块或包时的路径:

在Python内部默认设置了一些路径,导入模块或包时,都会按照指定顺序逐一去特定的路径查找。

# 通过输出sys.path可以指定系统默认寻找的路径有哪些:
import sys
print(sys.path)
>>输出结果:
[
    'C:\\Pycharm_files\\pythonProject\\day14', 
    'C:\\pythonpath', 
    'C:\\Program Files\\Python39\\python39.zip', 
    'C:\\Program Files\\Python39\\DLLs', 
    'C:\\Program Files\\Python39\\lib', 
    'C:\\Program Files\\Python39', 
    'C:\\Program Files\\Python39\\lib\\site-packages', 
    'C:\\Program Files\\Python39\\lib\\site-packages\\win32', 
    'C:\\Program Files\\Python39\\lib\\site-packages\\win32\\lib',
    'C:\\Program Files\\Python39\\lib\\site-packages\\Pythonwin'
]

如果想要导入任意的模块和包,都必须写在以上的路径下,才能被找到。当然,如果模块或包不在该路径,也可以手动在 sys.path 中添加指定路径,然后再导入:

# 导入路径A下的一个xxxx.py文件
import sys
sys.path.append("路径A")

import xxxxx  

注意:

  1. 创建自定义模块名称时,千万不能和内置模块或第三方模块的同名,否则容易导致模块冲突而报错。

  2. 项目执行文件一般都在项目根目录,如果执行文件在根目录下嵌套的其他目录中,就需要手动在 sys.path 中添加路径,否则无法导入模块或包。

  3. pycharm中默认会将项目的根目录加入到 sys.path 中

1.2.2 关于导入的方式:

导入本质上是将某个文件中的内容先加载到内存中,然后再从内存中去取用。而在Python开发中常用的导入的方式有两种,每种方式又有多种情况:

1.2.2.1 第一类:import xxxx(一般多用于导入 sys.path 目录下的一个py文件)
  • 模块级别

    ├── commons
    │   ├── __init__.py
    │   ├── convert.py
    │   ├── page.py
    │   ├── tencent
    │   │   ├── __init__.py
    │   │   ├── sms.py
    │   │   └── wechat.py
    │   └── utils.py
    ├── many.py
    └── run.py
    

在这里插入图片描述

  • 包级别

    ├── commons
    │   ├── __init__.py
    │   ├── convert.py
    │   ├── page.py
    │   └── utils.py
    ├── third
    │   ├── __init__.py
    │   ├── ali
    │   │   └── oss.py
    │   └── tencent
    │       ├── __init__.py
    │       ├── __pycache__
    │       ├── sms.py
    │       └── wechat.py
    └── run.py
    

在这里插入图片描述

1.2.2.2 第二类:from xxx import xxx(一般适用于导入包中嵌套的某个模块或导入模块中嵌套的某个功能)
  • 功能级别

    ├── commons
    │   ├── __init__.py
    │   ├── convert.py
    │   ├── page.py
    │   └── utils.py
    ├── many.py
    └── run.py
    

在这里插入图片描述
提示:基于from模式也可以支持 from many import *,即:导入一个模块中所有的功能(可能会重名,所以用的少)。

  • 模块级别

    ├── commons
    │   ├── __init__.py
    │   ├── convert.py
    │   ├── page.py
    │   └── utils.py
    ├── many.py
    └── run.py
    

在这里插入图片描述

  • 包级别

    ├── commons
    │   ├── __init__.py
    │   ├── convert.py
    │   ├── page.py
    │   ├── tencent
    │   │   ├── __init__.py
    │   │   ├── sms.py
    │   │   └── wechat.py
    │   └── utils.py
    ├── many.py
    └── run.py
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值