Python中模块与包-课程笔记

⚫ 模块对应于Python源代码文件;
⚫ 多个功能相似的模块可以组织成一个包。
➢ Python中的模块包括系统模块、第三方模块和用户自定
义模块。它们实质上是以.py为扩展名的Python文件
➢ 通过导入模块,可以使用该模块中的变量、函数和类等

模块化程序设计思想

  • 如果程序中包含多个可以复用的函数或类,则通常把相关的函数和类分 组包含在单独的模块(module)中。这些提供计算功能的模块称之为模
    块(或函数模块),导入并使用这些模块的程序,则称之为客户端程序。

  • 把计算任务分离成不同模块的程序设计方法,称之为模块化编程 (modular
    programming)。使用模块,可以将计算任务分解为大小合理 的子任务,并实现代码的重用功能。

模块的API

• 客户端使用模块提供的函数时,无须了解其实现细节;
• 模块和客户端之间遵循的契约称之为API(Application Programming Interface,应用程序编程接口);
• API用于描述模块中提供的函数的功能和调用方法。
• 模块化程序设计的基本原则是先设计API(即模块提供的函数或类的功能 描述),然后实现API(即编写程序,实现模块函数或类),最后在客户 端中导入并使用这些函数或类;
• 通过内置函数help(),可以查看Python模块的API

API设计

• API定义客户端和实现之间的契约。API是一个明确的规范,规定“实现” 的具体功能是什么
• API通常由两部分组成:可用函数的签名的精确规范,以及描述函数作 用的非正式自然语言描述。API一般使用表格的形式,描述模块中的变 量、函数和类

模块设计的一般原则

• (1)先设计API,再实现模块
• (2)控制模块的规模,只为客户端提供需要的函数。实现包含大量函数的模 块会导致模块的复杂性。例如,Python的math模块中就不包含正割函数、余 割函数和余切函数,因为这些函数很容易通过函数math.sin()、math.cos()和 math.tan()的计算而得
• (3)在模块中编写测试代码,并消除全局代码
• (4)使用私有函数实现不被外部客户端调用的模块函数
• (5)通过文档提供模块帮助信息

模块的实现的概念

• “实现”是指实现用于重用的函数或类的代码,模块的实现就是若 干实现函数或类的代码的集合,保存在一个后缀为.py的文件中;
• 模块的实现必须遵循API规约,可以采用不同算法实现API,这为模 块的改进和版本升级提供了无缝对接,只需要使用遵循API的新的实 现,所有客户端程序无须修改即可以正常运行。

模块的客户端

• 客户端遵循API提供的调用接口,导入和调用模块中实 现的函数功能;
• API允许任何客户端直接使用模块,而无需检测模块中 定义的代码,例如可以直接使用模块math和random等。

模块化程序设计的优越性

• 可以编写大规模的系统程序
• 控制程序的复杂度
• 实现代码重用
• 增强可维护性

模块导入方式(import)

方式一方式二
模块的导入import 模块名from 模块名 import 函数名 或:from 模块名 import
导入示例import combinatorialfrom combinatorial import fac,comb 或者:from combinatorial import
函数调用模块名.函数名函数名
函数调用示例combinatorial.fac(10)fac(10)

创建模块

• Python模块对应于包含Python代码的源文件(其扩展 名为.py),在文件中可以定义变量、函数和类;
• 在模块中,除了可以定义变量、函数和类之外,还可 以包含一般的语句,称之为主块(全局语句)。当运 行该模块,或导入该模块时,主块语句将依次执行。
➢ Python文件中的每个文件都可以做为一个模块存在,文
件名即模块名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是第八篇笔记。 ### Python 文件操作 #### 文件操作基础 - 文件操作是指对计算机硬盘上的文件进行读写操作,Python 的文件操作是通过内置的 `open()` 函数实现的。 - `open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)` 函数用于打开一个文件,并返回文件对象。 - `file`:要打开的文件名(含路径)。 - `mode`:文件打开的模式,有读模式('r')、写模式('w')、追加模式('a')等。 - `buffering`:缓冲区大小,0 表示不缓冲,1 表示缓冲一行,大于 1 表示缓冲区大小,负数表示使用默认缓冲区大小。 - `encoding`:文件编码格式。 - `errors`:错误处理方式。 - `newline`:换行符。 - 文件对象的方法: - `read(size=-1)`:读取文件内容,`size` 表示读取的字节数,不指定表示读取整个文件内容。 - `readline(size=-1)`:读取文件的一行内容,`size` 表示读取的字节数,不指定表示读取整行内容。 - `readlines(hint=-1)`:读取所有行并返回一个列表,`hint` 表示读取的字节数,不指定表示读取全部行。 - `write(string)`:将字符串写入文件。 - `writelines(sequence)`:将字符串序列写入文件,序列每个元素都是字符串。 #### 文件操作示例 - 打开文件:`file = open('file_name', 'r')`。 - 读取文件内容:`content = file.read()`。 - 关闭文件:`file.close()`。 - 读取文件的一行内容:`line = file.readline()`。 - 逐行读取文件内容:`for line in file: print(line)`。 - 写入文件内容:`file.write('Hello World!')`。 - 写入多行内容:`file.writelines(['Hello', 'World', '!'])`。 #### 文件操作进阶 - 使用 `with` 语句可以自动关闭文件,避免忘记关闭文件而导致的问题。 - 示例: ```python with open('file_name', 'r') as file: content = file.read() ``` - 使用 `os` 模块可以对文件进行更加高级的操作,如文件重命名、删除等。 - 示例: ```python import os os.rename('file_name', 'new_file_name') # 重命名文件 os.remove('file_name') # 删除文件 ``` ### Python 面向对象编程 #### 面向对象编程基础 - 面向对象编程是一种编程思想,将程序的对象看作是相互交互的实体,通过它们之间的交互来完成程序的功能。 - 类(class)是面向对象编程的一个重要概念,它是一种用户自定义的数据类型。 - 类含属性(特征)和方法(行为),属性指对象的数据成员,方法指对象的行为成员。 - 类的定义: ```python class ClassName: # 类属性 attribute = value # 构造函数 def __init__(self, arg1, arg2, ...): self.arg1 = arg1 self.arg2 = arg2 ... # 类方法 def method(self, arg1, arg2, ...): ... ``` - 类的实例化: ```python object_name = ClassName(arg1, arg2, ...) ``` - 对象的属性和方法: ```python object_name.attribute # 访问对象的属性 object_name.method(arg1, arg2, ...) # 调用对象的方法 ``` #### 面向对象编程示例 - 示例:定义一个 `Rectangle` 类,实现矩形的面积和周长计算。 ```python class Rectangle: # 类属性 name = 'Rectangle' # 构造函数 def __init__(self, width, height): self.width = width self.height = height # 类方法 def area(self): return self.width * self.height def perimeter(self): return 2 * (self.width + self.height) ``` - 使用示例: ```python rectangle = Rectangle(3, 4) print(rectangle.name) # 输出 'Rectangle' print(rectangle.area()) # 输出 12 print(rectangle.perimeter()) # 输出 14 ``` ### 总结 本篇笔记介绍了 Python 的文件操作和面向对象编程基础,括文件操作函数的使用、类的定义、对象的实例化和属性、方法的访问等。了解和掌握这些内容可以帮助我们更好地进行 Python 编程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值