IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 模块和包--python基础 -> 正文阅读

[Python知识库]模块和包--python基础

1. 什么是模块

1)模块的英文为:Modules
2) 模块是一个扩展名为“.py”的文件
3) 模块的作用:
(1) 规范代码,易于阅读
(2) 提高开发效率:方便其他程序使用已经编写好的代码
(3) 避免函数名和变量名冲突

2. 自定义模块

2.1 创建模块

1)创建模块实际上就是创建一个.py文件
2)创建的模块名不要与python自带的标准模块名相同
3) 模块中可以包含变量、函数、类

在这里插入图片描述

2.2 导入模块

1)导入模块有两种方式:
(1)import语句导入模块
(2) from…import… 语句导入模块
2)在导入模块时,会将所有没有缩进的代码都执行一遍

2.2.1 import 语句导入

(1)使用import语句方式导入,导入模块中所有工具
(2)当模块名较为复杂,可以使用 as 关键字给模块起别名
(3)调用模块中的变量、函数、类时需要在前面加上模块名:模块名.工具
(4) 导入多个模块时,推荐每个导入模块占据一行
语法格式:

import 模块名 [as 别名]



actor = '我最喜爱的演员名是cdm'
print(actor)


def income(income1, income2):
    return income1*0.6+income2*0.8


class Action(object):
    def __init__(self, ac_name, tv_name):
        self.ac_name = ac_name
        self.tv_name = tv_name

    def eval(self, score):
        print('%s  主演的电视剧  [%s],观众评分:  %.1f' % (self.ac_name, self.tv_name, score))

在这里插入图片描述
这里也可以看出,虽然掉导入模块时,没有调用actor函数,但是因为导入一个模块时自动执行所有没有缩进的代码,所以,actor函数依然执行了。

2.2.2 使用from … import 语句导入模块

(1) 这种方法导入模块中的部分工具
(2)不需要通过模块名.作为前缀,可以直接使用模块提供的函数、变量和类

在这里插入图片描述

这里也可以看出,虽然掉导入模块时,没有调用actor函数,但是因为导入一个模块时自动执行所有没有缩进的代码,所以,actor函数依然执行了。

2.2.3 以主程序形式执行

要想解决上面没有调用actor函数,确执行的情况,可以使用python的内置函数__name__.
在实际开发中,开发人员通常会创建模块后增加一些测试代码,比如actor函数的print(actor),再比如在模块中创建对象测试,但是这些代码在导入模块时是不需要被执行的。

actor = '我最喜爱的演员名是cdm'
print(actor)


def income(income1, income2):
    return income1*0.6+income2*0.8


class Action(object):
    def __init__(self, ac_name, tv_name):
        self.ac_name = ac_name
        self.tv_name = tv_name

    def eval(self, score):
        print('%s  主演的电视剧  [%s],观众评分:  %.1f' % (self.ac_name, self.tv_name, score))


# 作为模块导入时,不需要执行的测试代码
dww = Action('大胃王', 18)
dww.eval(9.2)
print('输出的', __name__)

在这里插入图片描述
在调用模块中执行结果:

在这里插入图片描述
可以看到,在输入__name__的主程序中执行,输出结果为:main;当作为模块导入其他模块时,输出结果为被导入模块的模块名。
因此,可以通过添加__name__ == 'main’来判断是否在主程序执行,在主程序执行,就输出测试代码,查看代码能够正常运行;而作为模块导入时,不执行测试代码。



actor = '我最喜爱的演员名是cdm'
if __name__ =="__main__":
    print(actor)


def income(income1, income2):
    return income1*0.6+income2*0.8


class Action(object):
    def __init__(self, ac_name, tv_name):
        self.ac_name = ac_name
        self.tv_name = tv_name

    def eval(self, score):
        print('%s  主演的电视剧  [%s],观众评分:  %.1f' % (self.ac_name, self.tv_name, score))

if __name__ =="__main__":
    # 作为模块导入时,不需要执行的测试代码
    dww = Action('大胃王', 18)
    dww.eval(9.2)
    print('输出的', __name__)

在这里插入图片描述
导入其他模块时,执行效果:
在这里插入图片描述
在这里插入图片描述
可以看到并没有输出ac_income中的测试代码。

3. 包

1)包是一个分层次的目录结构,他将一组功能相近的模块组织在一个目录下
2)包具有以下作用:
(1)避免模块名重名引发的冲突
(2) 规范代码
3)包与文件夹的区别
(1) 包简单理解是文件夹,不过,在该文件夹中必须存在一个名为:init.py的文件
4)包的命名方式与变量名一样,命名不符合规范会导致导入包时出现问题

3.1 创建包

在这里插入图片描述
在创建python包时,会自动创建__init__.py文件文件
(1)init.py 文件在导入包时会默认加载,自动执行;
(2) 可以将一些初始化的函数、变量、类放在__init__.py文件中

3.2 导入包

导入包与导入模块一样,有两种方法:
1)使用import语句导入包
2)使用from…import…语句导入包

3.2.1 使用import语句导入包

在这里插入图片描述
可以看到,当导入包时,还不能使用包中的模块,解决办法:
1)在__init__.py文件中使用

from . import 模块名

导入模块
在这里插入图片描述
之后,可以看到,已经可以使用包里面的income模块
在这里插入图片描述
在这里插入图片描述
2) 使包名.模块名的方式导入
在这里插入图片描述

3.2.2 使用from… import 语句导入包

1) 方式一:使用这种方式,调用模块中工具时,需要使用模块名.

from 包名 import 模块名

在这里插入图片描述
2) 方式二: 可以直接使用工具名(变量、函数、类名)

from 包名.模块名  import 工具名

在这里插入图片描述
3) 方式三: 若要导入包中所有内容,可以使用 *星

from 包名 import *

在这里插入图片描述
可以看到,直接使用*导入包中所有内容时,包下的模块无法正常使用,此时需要在
init.py文件中通过__all__函数定义可以通过 * 星 访问的模块名
在这里插入图片描述
在这里插入图片描述
可以看到,在__init__.py文件中,通过__all__ 定义了可以通过 * 星 访问的模块income,在使用时income模块可以正常使用,但未通过__all__暴漏的actor模块不能正常使用。
4)方式四:加载模块下的全部定义(工具)

from 包名.模块名 import *

在这里插入图片描述

4. 第三方模块的下载与安装

pip install md  安装md模块
pip uninstall md 卸载md模块
pip list 查看已安装的第三方模块
help('modules') 查看已有的标准模块和第三方模块
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-23 00:52:48  更:2022-06-23 00:53:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 16:02:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码