python学习-面向对象编程2

89 阅读5分钟

python学习-面向对象编程2

本文介绍 python 面向对象编程,包括模块、包、模块的使用和高级特性、模块化编程设计、pip 安装第三方库的使用等。

供自己以后查漏补缺,也欢迎同道朋友交流学习。

引言

在前面的学习中,我们已经了解了 python 类的定义和使用,继承和多态的概念,以及类的封装和高级特性。

在这篇文章中,我们将继续深入学习 python 面向对象编程的高级特性,包括模块、包、模块的使用和高级特性、模块化编程、第三方库的使用等。

模块和包

模块是 Python 中的基本组织单元,它是一个包含 Python 定义和声明的文件。

模块可以定义函数、类和变量,也可以包含可执行的代码。

模块的主要作用是封装特定的功能,使得代码更加模块化、可重用和易于维护。

创建模块

我们创建一个 math_utils.py 的文件,其中包含一些数学相关的函数:

# math_utils.py

def add(x, y):
  return x + y

def subtract(x, y):
  return x - y

def multiply(x, y):
  return x * y

def divide(x, y):
  return x / y

导入模块

使用 import 语句导入模块。

import math_utils

# 使用模块的功能
result1 = math_utils.add(5, 3)
print('@@@@ 使用模块的功能', result1)
# 输出: @@@@ 使用模块的功能 8

# 导入模块中的特定内容
from math_utils import subtract

# 使用导入的函数
result2 = subtract(5, 3)
print('@@@@ 导入模块中的特定内容', result2)
# 输出: @@@@ 导入模块中的特定内容 2

# 给模块或函数重命名
import math_utils as mu
result3 = mu.multiply(5, 3)
print('@@@@ 给模块或函数重命名', result3)
# 输出: @@@@ 给模块或函数重命名 15

是组织的hierarchially的模块集合。它们定义了一个命名空间,并且可以包含多个模块子包

要创建一个包,你需要在一个目录中创建一个__init__.py文件,这个文件可以为空,但它告诉 Python 解释器这个目录应该被视为一个包。

graphics/
    __init__.py
    shapes.py
    colors.py

init.py文件的作用:

  1. 它标记一个目录为 Python 包。
  2. 它定义了包的命名空间,你可以在这个文件中定义变量和函数,这些可以被包内的其他模块访问。
  3. 它允许你控制包的初始化过程,例如,你可以在这个文件中执行包级别的初始化代码。

模块高级特性

模块的__name__属性

每个模块都有一个__name__属性,当模块被直接运行时,它的值为'main'。这个属性通常用于判断模块是被导入还是被直接运行,从而执行不同的代码。

if __name__ == '__main__':
    print("这段代码只有在模块被直接运行时才会执行")
else:
    print("这段代码只有在模块被导入时才会执行")

模块的重新加载

Python 中,如果你修改了模块的代码并希望立即看到变化,可以使用 reload() 函数重新加载模块。这在开发过程中非常有用,因为你不需要重启解释器来看到修改后的效果。

from importlib import reload

import math

# 重新加载math模块
reload(math)

模块化编程

模块化设计

良好的模块化设计可以使代码更易于理解和维护,同时提高代码的可重用性。

  • 功能单一:每个模块应该有一个明确的功能,并且只负责一个逻辑上的功能单元。
  • 高内聚,低耦合:模块内的代码应该紧密相关(高内聚),而模块之间的依赖关系应该尽可能少(低耦合)。
  • 接口明确:模块之间的接口应该清晰定义,使得模块之间的交互简单明了。

代码重用

模块化是提高代码重用性的关键。通过将代码分解成模块,你可以在不同的项目中重用相同的模块。

  • 封装通用功能:将通用的功能封装成模块,这样在需要时可以直接导入和使用。
  • 提取重复代码:当发现代码中有重复的部分时,应该将它们提取出来,放入一个单独的模块中。
  • 使用配置文件:对于不同的环境或条件,使用配置文件而不是修改代码来适应不同的情况。
  • 编写可配置的模块:使模块能够接受参数或配置,以适应不同的使用场景。

第三方库的使用

使用pip安装

pip 是 Python 的包管理工具,它允许你从 Python 包索引(PyPI)安装和管理第三方库。

# 安装requests库
pip install requests
# python3 安装requests库
pip3 install requests

# 安装numpy和pandas库
pip install numpy pandas
# python3 安装numpy和pandas库
pip3 install numpy pandas

常用第三方库

  • requests:requests 是一个简单易用的 HTTP 库,用于发送各种HTTP请求。
import requests

response = requests.get('https://api.github.com')
print(response.json())  # 输出JSON响应内容
  • numpy:numpy 是一个强大的数学库,用于处理大型多维数组和矩阵,以及执行高级数学函数和操作。
import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(np.mean(arr))  # 输出数组的平均值
  • pandas:pandas 是一个数据处理库,用于处理和分析结构化数据。
import pandas as pd

data = {'Name': ['John', 'Anna', 'Peter', 'Linda'],
        'Age': [28, 23, 34, 29]}
df = pd.DataFrame(data)
print(df.head())  # 输出DataFrame的前几行

python学习专栏系列

练习代码库地址

python-study