python解耦重构,提高程序维护性

一、重构思想

  1. 思路来源

java spring设计模式学习,强调低耦合的思想,通过解耦来提高程序的可维护性。

二、代码重构

  1. 解决方案
    通过单独配置文件来控制变量的改变。
    spring的话可以读取xml或者是springboot 读取application.properties 来获取变量值。
    python 使用以ini结尾配置文件。
  2. 方案优点
    让更改代码更方便,不需要查看所有的源码。
    集中在一个配置文件中,方便其他人员使用及维护。
  3. ini配置主要使用方法
    后面可以加注解
bash 复制代码
 # 

telephone2022 这个section 的部分, 每个文件可以有多个section

bash 复制代码
 [telephone2022]  

相等于 key =batch_number, value=3

bash 复制代码
batch_number = 3
  1. 具体实施
    first 建立一个config.ini 配置文件。
bash 复制代码
# batch_number 第几次做、send_date 做的日期
# date_change 做的月份 、month_new 数据给的最新月份
#  date_yzs 数据生成日期
[telephone2022]
batch_number = 3
send_date = 2024-07-03[2022]
date_change = 2024-05
month_new = 7
date_yzs = 20240702

[Global]
date= 2024-07-03

second 安装解析库

bash 复制代码
pip install configparser

three python文件读取 config.ini 配置文件

python 复制代码
import configparser
def read_config(section,key):
    """
    读取配置文件
    :param section:  配置的section名
    :param key: 配置section名下变量
    :return: 配置section名下变量的值
    """
    # 配置的路径
    file_path = r'config.ini'
    config = configparser.ConfigParser()
    config.read(file_path,encoding='utf-8')
    return config.get(section, key)


# 使用方法
print(read_config('telephone2022', 'month_new'))

其他文件可以调用read_config 函数获取这个值

python 复制代码
print(read_config('telephone2022', 'month_new'))

four 把read_config 封装起来,例如以下方案封装。

python 复制代码
import os
# 获取当前文件的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 计算上上上级目录的路径
parent_parent_parent_dir = os.path.join(current_dir, '../../../')
# 将上上上级目录添加到Python的搜索路径
sys.path.append(parent_parent_parent_dir)
# 现在可以导入上上上级目录中的模块
from config.dataconfig import read_config
print(read_config('telephone2022', 'month_new'))

三、重构展望

  1. 深入设计模式
    欢迎一起沟通交流代码重构。
相关推荐
老毛肚6 小时前
jeecg-boot-base-core 02 day
javascript·python
yaoxin5211236 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
凡人叶枫7 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
学逆向的7 小时前
C++纯虚函数
开发语言·c++·网络安全
岁月宁静7 小时前
RAG 文档摄入全链路,从原理到生产落地
vue.js·人工智能·python
程序员二叉7 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉7 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
JaydenAI7 小时前
[对比学习LangChain和MAF-07]如何引入人机交互的审批流程
python·ai·langchain·c#·agent·hitl·maf
神奇元创8 小时前
商用级光路加速卡:大模型推理的极速落地方案
python·神经网络·fpga开发·dsp开发
凡人叶枫8 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++