【Python程序设计】 项目的最佳实践【03/8】

这篇具有很好参考价值的文章主要介绍了【Python程序设计】 项目的最佳实践【03/8】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Python程序设计】 项目的最佳实践【03/8】,python技能小结,python,软件构建

一、说明

        我们涵盖了 9 个最佳实践和示例,帮助您构建项目以实现协作和生产力。 以下文章是有关 Python 数据工程系列文章的一部分,旨在帮助数据工程师、数据科学家、数据分析师、机器学习工程师或其他刚接触 Python 的人掌握基础知识。迄今为止,本初学者指南包括:

        Python是一种通用且被广泛采用的编程语言,用于从数据分析到Web开发的所有内容。但是,随着 Python 项目复杂性的增加,跟踪所有移动部件并确保一切井井有条可能变得具有挑战性。

        这就是了解 Python 文件结构的用武之地。在本文中,我们将回顾构建 Python 项目的一些关键概念以及如何最好地应用它们。

        如果你刚刚起步,这些最佳实践不仅可以帮助你编写更好的代码,还可以帮助你更好地维护和扩展 Python 代码库或数据管道。

目录

  • 为什么要拆分您的项目?
  • 构建 Python 项目的 9 个最佳实践
  • 演示:一个简单的数据工程项目
  • 构建项目以便于协作
  • Python 项目文件夹结构和密钥文件

二、为什么要拆分您的项目?

        随着Python程序变得越来越大,它们变得越来越难以管理。如果团队正在项目上进行协作并同时对项目的多个方面进行更改,则尤其如此。

        为了使项目更易于管理和维护,我们将大型、笨拙的编程任务分解为更易于管理的子任务或模块。顾名思义,模块可以在多个地方重用。

        将项目分解为模块称为“模块化编程”。如前面的文章所述,函数、模块和包都是模块化编程中使用的机制。模块化编程提供了许多优点。

  1. 它允许您一次专注于一个模块来简化您的工作
  2. 它使您的项目更易于维护。 如果团队正在共同处理一个项目,则采用模块化方法可以降低您的工作最终导致版本冲突的可能性。
  3. 它使您的代码更可重用。 如果你的项目是一个大型的单体,任何想要重用它的人都必须解析大量代码。如果代码按模块进行组织,则仅导入所需的部件会变得更容易。
  4. 它减少了重复。 根据上述观点,模块化代码更具可重用性,这意味着您最终复制函数的可能性较小。
  5. 它有助于避免命名空间冲突,因为每个模块都可以定义一个单独的命名空间。

三、构建 Python 项目的 9 个最佳实践

        当你在网上寻找关于如何组织和编写Python代码的建议时,你会发现很多不同的想法。但实际上,它归结为一些基本的事情。

3.1. 组织代码

        在处理项目时,正确组织代码至关重要。首先,您可以为项目的不同部分创建单独的文件夹,例如一个用于代码本身,一个用于数据,一个用于测试,一个用于文档。这将帮助您更快地找到所需的内容,并使其他人更容易浏览您的代码。

3.2. 使用一致的命名

        在整个项目中为文件和文件夹使用一致的名称非常重要。尝试遵循约定,例如对变量和函数使用下划线,对类使用大写字母。这将使阅读和理解代码变得更加容易。

3.3. 使用版本控制

        即使在单独工作时,使用像 Git 这样的工具来跟踪对代码的更改也是推荐的最佳做法。它允许您记录更改,并轻松地将工作备份到基于云的存储库。大多数基于云的 Git 解决方案都为独立从业者提供免费层。

3.4. 使用包管理器

        使用像 pip 这样的包管理器来管理依赖项将帮助您安装和跟踪项目需要运行的所有不同软件。在处理具有许多依赖项的大型项目时,这一点尤其重要。

3.5. 创建虚拟环境

        若要使项目与计算机上的其他项目隔离,可以使用虚拟环境。这将防止不同项目中使用的包之间的冲突。

3.6. 注释您的代码

        添加注释来解释您的代码正在做什么以及如何使用它对于使您的代码更易于其他人访问非常重要。它还可以帮助您记住编写代码时的想法。

3.7.测试

        使用自动测试来检查代码是否按预期工作对于尽早捕获错误至关重要。这将节省您的时间并防止出现问题。

3.8.Ruff和风格

        使用 Ruff 或 Flake8 等工具来确保您的代码看起来一致并捕获常见错误将帮助您编写更好的代码。这些工具检查您的代码是否与官方 Python 风格指南 PEP 8 保持一致。还可以使用 Black 等工具来确保代码在整个项目中看起来相同。这将帮助您保持一致性,并使其更易于阅读和理解您的代码。

3.9. 打包分享

        使用像setuptools这样的工具来打包和分发你的Python代码将更容易与他人分享你的工作。这也将有助于确保其他人可以使用你的代码而不会遇到任何问题。

四、演示:一个简单的数据工程项目

        让我们将这些技巧应用于一个动手示例。我们将使用几种最佳做法,包括有组织的代码、一致的命名、有用的注释和测试。

        我们将编写一个脚本来从数据库中提取数据,对其进行转换,然后将其加载到另一个数据库中。让我们首先在名为 my_module.py 的模块中定义变量和函数:

# Constants
SOURCE_DB = "source_db"
DESTINATION_DB = "destination_db"
TABLE_NAME = "table_name"
DATE_COLUMN = "date_column"
SALES_COLUMN = "sales_column"

# Functions
def extract_data(table_name):
    # Code to extract data from the source database

def transform_data(data_frame):
    # Code to transform the data

def load_data(data_frame):
    # Code to load the data into the destination database

        在此示例中,我们对变量和函数使用一致的名称。像 、 、 和 等常量都大写并用下划线分隔。像 、 和 这样的函数都是小写的,用下划线分隔。SOURCE_DBDESTINATION_DBTABLE_NAMEDATE_COLUMNSALES_COLUMNextract_datatransform_dataload_data

        接下来,让我们在文件中编写一个简单的单元测试,以确保我们的代码按照我们想要的方式工作:test.py

import unittest
import pandas as pd
from my_module import transform_data

class TestDataTransformation(unittest.TestCase):
    def test_transform_data(self):
        # Create a sample input DataFrame
        input_data = pd.DataFrame({
            "date_column": ["2022-01-01", "2022-02-01", "2022-03-01"],
            "sales_column": [100, 200, 300]
        })

        # Call the transform_data function
        output_data = transform_data(input_data)

        # Check the output DataFrame
        expected_output = pd.DataFrame({
            "year": [2022, 2022, 2022],
            "month": [1, 2, 3],
            "sales": [100, 200, 300]
        })

        pd.testing.assert_frame_equal(output_data, expected_output)

        在这里,我们导入了 and 模块,以及来自unittestpandastransform_datamy_module.py.

        然后,我们定义了一个名为的测试类,它继承自 .在此类中,我们定义了一个名为 的单个测试函数。此函数创建一个包含三行数据的示例输入数据帧,使用此输入数据调用该函数,然后检查输出数据帧以确保它具有预期值。TestDataTransformationunittest.TestCasetest_transform_datatransform_data

        我们使用相同的三行数据定义预期的输出数据帧,并使用该函数检查输出数据帧是否与预期的数据帧匹配。如果输出数据帧与预期数据帧匹配,则测试将通过。否则,测试将失败,并提供有关不匹配发生位置的信息。pd.testing.assert_frame_equal

五、构建项目以便于协作

        与其他开发人员一起编写代码时,要考虑的最重要的事项是:

  • 确保您拥有正确的代码版本,并且
  • 正确的软件依赖项

        这就是版本控制派上用场的地方。假设一个开发团队正在开发一个涉及开发 Web 应用程序的 Python 项目。每个开发人员都在处理项目的特定功能或模块。如果没有版本控制,团队将不得不手动协调他们的工作,这可能令人生畏且容易出错。一个开发人员可能会意外地覆盖另一个开发人员的工作,从而导致进度丢失或冲突。

        但是,通过使用 Git 等版本控制系统,团队可以轻松跟踪更改、协作处理代码,并确保每个人都使用相同版本的代码库。使用 Git,每个开发人员都可以在自己的分支上工作,这允许他们独立进行更改,而不会影响主代码库。

        当需要集成每个人的更改时,Git 提供了用于合并代码和解决冲突的工具,使团队更容易协同工作。Git 还提供了代码库的完整历史记录,包括每个开发人员所做的所有更改,这对于调试和了解代码如何随时间演变非常有用。

        为了确保对共享代码的更改不会破坏其他项目,最好使用 pytest 等自动化测试工具。在将代码更改合并到主代码库之前查看代码更改也是一种很好的做法。

        最后,当涉及到“轻松协作”时,正如我们的最佳实践列表中提到的,在编写代码时记录代码非常重要。这使新团队成员更容易理解代码并加快速度。

六、Python 项目文件夹结构和密钥文件

        您可能想知道为什么 Python 项目具有结构 .这种组织项目的方式在 Python 中很流行,因为它有助于保持一切整洁。顶部文件夹称为“my-project”,类似于整个项目的主文件夹。使用破折号和下划线有助于区分项目的两个级别。特别是,下划线有助于将项目引用与可能使用虚划线符号的变量或函数名称区分开来。因为破折号也是一个减号,所以定义 python 包的“内部级别”必须使用下划线。my-project/my_project

        关于如何在“我的项目”中组织文件,有松散的规范。顶层通常包含一个文件和各种配置文件。项目中最重要的部分是它包含的一个或多个 python 包。python 包是一个目录,构成 Python 导入系统的有效目标,通常包含一个文件。在此示例中,有一个名为“my_project”的 Python 包,它位于顶层。README.md__init__.py

        从这里开始,在大多数项目中找到的关键文件和子文件夹是:

  • 依赖项管理文件(通常为 或 )此文件用于配置项目及其依赖项。我们在本博客系列的第二部分中探讨了依赖关系管理。setup.pypyproject.toml
  • README.md:此文件以 markdown 形式编写,简要介绍了您的项目、其用途以及任何安装或使用说明。
  • LICENSE:此纯文本文件指定发布代码的许可证。有许多开源许可证可供选择,因此请务必选择适合您需求的许可证。

此外,许多项目将具有以下两个文件夹:

  • src/:此目录是 python 包的替代位置,如果您不想将它们直接放在项目根目录中。
  • tests/:此目录包含验证项目功能的测试代码。您可以使用 pytest 或 unittest 等测试框架来编写和运行测试。

接下来...

        我们已经分享了随着项目复杂性的增加,以结构化的方式组织 Python 项目的重要性,特别是如果您是团队的一员或计划与其他开发人员共享您的工作。通过遵循本文中概述的最佳做法,可以更轻松地维护和缩放基本代码或数据管道。文章来源地址https://www.toymoban.com/news/detail-701669.html

到了这里,关于【Python程序设计】 项目的最佳实践【03/8】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【简单小程序项目源码】基于python和微信小程序的刷题系统设计与实现

    ​ 目录 一、整体目录: 文档含项目摘要、前言、技术介绍、可行性分析、流程图、结构图、ER属性图、数据库表结构信息、功能介绍、测试致谢等约1万字等 二、运行截图 三、代码部分(示范): 四、数据库表(示范): 数据库表有注释,可以导出数据字典及更新数据库时间

    2024年02月04日
    浏览(40)
  • 各类Python项目的项目结构及代码组织最佳实践

    1. 了解Python项目文件组织结构非常重要 为什么要掌握python项目结构? 优秀的程序员都使用规范的项目代码结构,了解这些好的习惯方式,有助于快速读懂代码 如果项目是几个人合作开发,好的代码结构,便于分工,减少混乱,使项目开发过程更顺畅。 采用规范的项目结构,

    2023年04月16日
    浏览(38)
  • Python中的设计模式与最佳实践

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在软件开发中,设计模式是一种解决常见问题的经过验证的解决方案。Python作为一种流行的编程语言,具有丰富的库和灵活的语法,使其成为

    2024年04月23日
    浏览(30)
  • 微信小程序餐厅在线点餐项目+后台Java,php毕业设计,毕业指导,计算机作业,python微信小程序_电脑版微信能做点餐后台吗

    本文首先以食堂订餐小程序过程的基本问题作为研究对象。在开发系统之前,我们对现有状况进行了详细的调查和分析。最后,我们利用计算机技术开发了一套完整合适的食堂订餐小程序。该系统的实现主要优势是:该系统主要采用计算机技术开发,它方便快捷;系统可以通

    2024年04月27日
    浏览(28)
  • 毕业设计(论文)免费赠送项目完整源码,可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、全套文案等70276

    摘  要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多学校的眼球之中,他们利用网络来做这个校园会议室管理的网站,随之就产生了“学术会议管理系统 ”,这样就让用户学术会议管理系统更加方便简单。 对于本学术会议管理系统的设计来说,

    2024年01月19日
    浏览(36)
  • 成都理工大学_Python程序设计_Python程序设计期末模拟试题

    ‌下列变量名中,哪一项不符合正确的变量命名规则?( ) 2_year ‍Python不支持的数据类型有( )。 char ​从键盘输入一个整数赋值给number,下面哪一句是正确的?( ) number = int(input(‘请输入一个整数:’)) 令list = [1, 2, 3],则分别执行命令del list[1]和list.remove(1)后的list为(

    2024年02月08日
    浏览(36)
  • Python 程序设计入门(017)—— 选择结构程序设计

    程序中的选择结构也称为判断结构,按照条件选择执行不同的代码片段。Python 中的选择结构主要有三种形式:if 语句、if…else 语句和 if…elif…else 语句。 if 语句的语法格式如下: 说明: (1)表达式:可以是比较表达式或逻辑表达式。如果表达式的值为 True,则执行语句块

    2024年02月13日
    浏览(32)
  • 用python做一个小程序,python设计一个小程序

    大家好,本文将围绕用python做一个小程序展开说明,python设计一个小程序是一个很多人都想弄明白的事情,想搞清楚python编写一个小程序需要先了解以下几个事情。 这是一个简单的 PyQt5 小程序,该程序将创建一个窗口,并在其中放置一个按钮和一个文本输入框。当用户点击

    2024年02月02日
    浏览(28)
  • Python 程序设计-系统登录页面设计

    系统要有管理员登录、普通用户登录和退出三个选项可供选择 系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user目录下的文件夹中,存储在user.csv中 系统要能够进行欢迎界面显示,登录成功后显示该页面。 系统要能够有写入信息功能,当用户或管理员

    2024年02月09日
    浏览(34)
  • Python程序设计期末作品完整版|代码和程序设计文档

    python程序设计作品,希望对您有帮助,希望您的一键三连! 1.爬取数据的意义 富豪榜的出现,体现了人们思想的变化:由保守藏富向正向面对财富的转变;由保守向文明开放(–说明了大众媒体的进步与教育的普及等思想工具的极大地提高);标志着人们对财富对经济正在走向新纪

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包