Python基础学习(六)

目录

模块

模块化程序设计理念

标准库模块

模块化编程的流程

模块的API和功能描述要点

模块的导入

import语句导入

模块的加载问题

from……import导入

import与from……import语句的区别

——import——()动态导入

包(package)的使用

包(package)的概念和结构

导入包操作和本质

用*导入包

包内引用

sys.path和模块搜索路径


模块

模块化程序设计理念

1.Python程序由模块组成。一个模块对应Python源文件,一般后缀名是:py

2.模块由语句组成,运行Python文件时,按照模块中语句的顺序依次执行

3.语句是Python程序的构造单元,用于创建对象,变量赋值,调用函数,控制语句等

标准库模块

与函数类似,模块也分为标准库模块和用户自定义模块

模块化编程:将一个任务,分解成多个模块,每个对象就像一个积木一样,便于后期的反复使用,反复搭建

模块化编程的流程

1.设计API,进行功能描述

2.编程实现API中描述的功能

3.在模块中编写测试代码,并消除全局代码

4.使用私有函数实现不被外部客户端调用的模块函数

模块的API和功能描述要点

API(Application Programming Interface(应用编程接口)):是用于描述模块中提供的函数和类的功能

描述和使用方法描述

模块化编程中,首先设计的就是模块的API(既要实现的功能描述),然后开始编码实现API中描述的功能,最后,在其他模块中导入本模块进行调试

可通过help(模块名)查看模块的API

模块的导入

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

import语句导入

import语句的基本语法格式:

import 模块名 #导入一个模块

import 模块1,模块2…… #导入多个模块

import 模块名 as 模块别名 #导入模块并使用新名字

import加载的模块分为四个通用类别:

a.使用python编写的代码

b.已被编译为共享库或DLL的C或C++扩展

c.包好一组模块的包

d.使用C编写并链接到python解释器的内置模块

一般通过import语句实现模块的导入和使用import本质上是使用了内置函数——import——()

模块的加载问题

当导入一个模块时,模块中的代码都会被执行,不过如果再次导入,其实例对象与前一次相同

一个模块无论导入多少次,这个模块在整个解释器进程内有且只有一个实例对象

from……import导入

Python中可使用from……import导入模块中的成员,语法格式:

from 模块名 import 成员1,成员2……

如果希望导入一个模块中的所有成员,则可采用如下方式:

from 模块名 import *

尽量避免“from 模块名 import *”这种写法,它表示把模块中所以的不是以下划线——开头的名字都导入当前位置

import与from……import语句的区别

import导入的是模块,from……import导入的是模块中的一个类(或函数)

若进行类比的话,import导入的是”文件“,要使用该文件下的内容,必须在前面加”文件名称“,from……import导入的是文件下的”内容“,使用时,直接使用即可,无需加”文件名称“

——import——()动态导入

import语句本质是调用内置函数——import——(),可通过其实现动态导入,给——import——()动态传递不同的参数值,就能导入不同的模块

一般不建议自行使用——import——()导入,其行为在python1和python3中存在差异,会导致意外错误,若需动态导入可使用importlib

包(package)的使用

包(package)的概念和结构

当一个项目中有很多模块时,需要在进行组织,将功能类似的模块放在一起,形成”包(package)“。本质上,”包(package)“就是一个必须有——init——.py的文件夹

包下面可以包含”模块module“,也可以包含”子包subpackage“,就像文件夹下可以有文件也可以有文件夹一样

导入包操作和本质

基本结构:#aa.py,a.py为创建的包,module—AA为其包下的py源文件(模块)

  1. import a.aa.module—AA

在使用时,必须加完整名称来引用

2.from a.aa import module—AA

在使用时,可以直接使用模块名

3.from a.aa.module—AA import fon—AA

在使用时,可直接使用函数名

1.from package import item这种语法中,item可以是包、模块,也可以是函数、类、变量

2.import item,item……,这种语法中,item必须是包或者模块,不能是其他

3.——init——()的三个核心作用

(1)作为包的识别,不能删除

(2)用来实现模块导入

(3)导入包实质执行——init——.py文件,可以在——init——.py这个文件中做这个包的初始化,以及需要统一执行的代码

用*导入包

import *这样的语句理论上是希望文件系统找出包中所有的子模块,然后导入它们,但这可能会花费大量时间,python的解决方法是提供一个明确的包索引

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

包内引用

若是子包内的引用,可以按相对位置引入子模块,以aa包下的module—AA中导入a包下内容为例

from..import module—AA #..表示上级目录

from.import module—AA #.表示同级目录

sys.path和模块搜索路径

按照顺序查找

1.内置模块

2.当前目录

3.程序的主目录

4.python目录(若设置)

5.标准链接库目录

6.第三方目录库(site—packages目录)

7..pth文件的内容(若存在)

8.sys.path.append()临时添加的目录

当任何一个python文件启动时,就将以上这些搜索路径(除内置模块以外的路径)进行收集,放到sys模块的path属性中(sys.path)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

And ν

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值