第十一天的学习内容--模块,包...

本文详细介绍了Python中的模块和包的使用,包括导入机制、API接口、模块文档字符串、动态导入、模块加载与重载。还讨论了包的创建、结构和导入方式,强调了包内引用和搜索路径的管理。此外,提到了模块发布和安装的过程。
摘要由CSDN通过智能技术生成

量变引起质变。
语句–函数与变量–类和对象–模块–包
在这里插入图片描述
包 类似于文件夹(女生的包是用来放东西的),模块类似于文件。
在这里插入图片描述
在这里插入图片描述
API: 应用程序编程接口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们可以通过**doc**可以获得模块的文档字符串的内容。在这里插入图片描述
本模块用于计算公司员工的薪资 为 print(salary.doc)对应的字符串内容

在这里插入图片描述

每个模块都有一个名称,通过特殊变量__name__可以获取模块的名称。
模块名字对应源文件名。

仅有一个例外,就是当一个模块被作为程序入口时(主程序、交互式提示符下),它的__name__的值为“main”。我们可以根据这个特点,将模块源代码文件中的测试代码进行独立的处理。例如:
importmathmath.name#输出’math’

    用于计算公司员工的薪资
"""

company = "北京尚学堂"

def yearSalary(monthSalary):
    #计算年薪
    """根据传入的月薪的值,计算出年薪:monthsalary*12"""
    return monthSalary*12


def daySalary(monthSalary):
    """根据传入的月薪值,计算出1天的薪资。一个月按照22.5天计算(国家规定的工作日)"""
    return monthSalary/22.5


if __name__ == "__main__":
    print(yearSalary(3000))#根据月薪求年薪
    print(daySalary(3000))#根据月薪求日薪
结果:
36000
133.33333333333334

1.7模块文档字符串和API设计

我们可以在模块的第一行增加一个文档字符串,用于描述模块的相关功能。然后,通过__doc__可以获得文档字符串的内容。

在这里插入图片描述

2.模块的导入

模块化设计的好处之一就是“代码复用性高”。写好的模块可以被反复调用,重复使用。模块的导入就是“在本模块中使用其他模块”。

2.1import语句导入

在这里插入图片描述
在这里插入图片描述
math模块被加载后,实际会生成一个module类的对象,该对象被math变量引用,可以通过math变量引用模块中所有的内容
我们通过import导入多个模块,本质上也是生成多个module类的对象而已。

2.2from…import导入

Python中可以使用from…import导入模块中的成员。
基本语法格式如下:from 模块名 import 成员1,成员2,…
如果希望导入一个模块中的所有成员,则可以采用如下方式:
from 模块名 import (但是我们一般也不用 害怕取代掉别的参量)
在这里插入图片描述
from math import pi,sin
print(sin(pi/2))
#输出1.0

2.3import语句和from…import语句的区别

import导入的是模块。from…import导入的是模块中的一个函数/一个类。
在这里插入图片描述

在这里插入图片描述

##使用__import__()动态导入指定的模块
s="math"
m=__import__(s) #__import__()可以实现动态导入,动态的传递不同的参数值
print(m.pi) #数学函数中的pai

在这里插入图片描述

import importlib
a=importlib.import_module("math")
print(a.pi)

在这里插入图片描述

2.5模块的加载问题

当导入一个模块时,模块中的代码都会被执行。不过,如果再次导入这个模块,则不会再次执行。
在这里插入图片描述
重新加载有时候我们确实需要重新加载一个模块,这时候可以使用:

importlib.reload()

import test02
import test02
print("####")
import importlib
importlib.reload(test02)#此时 对test02 进行重新加载

3.包package的使用

3.1包(package)的概念和结构
当一个项目中有很多个模块时,需要再进行组织。我们将功能类似模块放到一起,形成了“”。本质上,“包”就是一个必须有__init__.py的文件夹。
这是包区别于文件夹的判断原理
在这里插入图片描述
在这里插入图片描述

3.2pycharm中创建包

在这里插入图片描述
在module_AA 中,设置函数命令为
print(“AA”)
通过调用包 ,import a.aa.module_AA,
结果就是 AA .

在这里插入图片描述
#以上两种输入都可以 ,fun —>function 方法

3.3导入包操作和本质

在这里插入图片描述

【注】1.frompackageimportitem这种语法中,item可以是包、模块,也可以是函数、类、变量。2.importitem1.item2这种语法中,item必须是包或模块,不能是其他。

导入包的本质其实是“导入了包的__init__.py”文件。也就是说,”importpack1”意味着执行了包pack1下面的__init__.py文件。这样,可以在__init__.py中批量导入我们需要的模块,而不再需要一个个导入。
在这里插入图片描述在这里插入图片描述

3.4 用*导入包(模糊导入)

尽管提供import*的方法,仍不建议在生产代码中使用这种写法。

3.5包内引用

如果是子包内的引用,可以按相对位置引入子模块以aa包下的module_AA中导入a包下内容为例:
fromimportmodule_A# …表示上级目录.表示同级目录from.importmodule_A2# .表示同级目录
在这里插入图片描述

3.6sys.path和模块搜索路径

在这里插入图片描述
在这里插入图片描述
当任何一个python程序启动时,就将上面这些搜索路径(除内置模块以外的路径)进行收集,放到sys模块的path属性中(sys.path)。

·使用sys.path查看和临时修改搜索路径
sys.path.append()临时添加的目录
在这里插入图片描述
.pth文件的写法
我们可以在site-packages目录下添加.pth文件。并在文件中增加内容:
#一行一个目录
g:\a
g:\b
g:\c
【注】1.需确保g:\a,g:\b,g:\c对应的目录真实存在。2.在windows系统中建立.pth文件,由于没有文件名不能直接建立。需要输入:“.pth.”才能正常建立.pth文件。

4.模块发布和安装

1.为模块文件创建如下结构的文件夹
在这里插入图片描述

2.在文件夹中创建一个名为『setup.py』的文件
在这里插入图片描述

3.构建一个发布文件。通过终端,cd到模块文件夹c下面,再键入命令:python setup.py sdist执行完毕后,目录结构变为:
在这里插入图片描述

4.2本地安装模块

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值