我如何编写行业标准的 Python 代码
我如何编写行业标准的 Python 代码
我在编写 Python 代码时使用的工具和最佳实践
无论您是 Python 新手还是经验丰富的老手,“行业标准”代码的概念都是难以捉摸的,而且实现起来往往很乏味——话虽如此,这绝对是可能的!在这篇文章中,我将详细介绍我在编写 Python 代码时使用的工具和最佳实践——让我们开始吧!
底部的完整列表和参考资料!
工具 #1:Python 调试器
将有关使用打印语句调试代码的古老笑话排在队列中……
每当我的一个项目陷入困境并且我似乎无法摆脱一系列错误时,Python 标准库中的 Python Debugger 模块是我的首选工具——它提供了一个交互式源代码调试器可以嵌入到类似于打印或日志语句的脚本中。
例子:
该工具可用于测试新功能,然后再将它们添加到将要添加到的确切环境中的脚本中——非常强大,对吧?
关联: https://docs.python.org/3/library/pdb.html
最佳实践 #1:函数字符串和文档字符串
更多信息来自我过去的帖子 这里 !
文档字符串通常使用三重双引号在函数或类定义下定义,并分为 3 个明确定义的部分:
- 功能描述。
- 任何参数的细分。
- 回报明细(如有)。
任何文档字符串的目的都是解释它所引用的代码部分,以便任何新查看它的人都能从一般意义上理解该部分的作用。
请参阅以下示例,但请注意,稍后我将介绍的练习会稍微改变这种格式!
def filter_systems(数据,阈值,keep_duplicate=False)
"""
一个简单的过滤器,用于删除低于用户定义的 x 值阈值的系统。
参数
----------
`data`:熊猫数据框
包含来自 xyz 数据集的系统的 pandas 数据框。必须包括列“x”和“y”。所有时间戳列都必须是时区感知的。
`阈值`:浮动
要应用于过滤器的 x 值的浮点阈值。必须在 1 到 10 之间。
`keep_duplicates`:布尔值
默认为假。确定是否应在过滤器中删除重复系统的布尔值。 退货
-------- `filtered_data` : 熊猫数据框
包含来自 xyz 数据集的过滤系统的 pandas 数据框。必须包括列“x”和“y”。所有时间戳列都必须是时区感知的。
"""
工具#2:记事本++
听我说完这个……
现在每个人都可以使用自己喜欢的 IDE 或文本编辑器,但我选择 Notepad++……你为什么要问?因为,它迫使我在使用 pip 可安装包时真正记住函数及其参数,而不是依赖于 VS Code 的“自动更正”助手之类的东西。
当然,这可能在大多数(如果不是全部)文本编辑器和 IDE 中都可以实现,但这只是我个人的偏好!为了维护我的编码标准,我在 Notepad++ 上配置了一些设置,如下所示:
- 一条垂直线在文件中正好 100 个字符——这将确保我的代码行不会太长。
- 显示行尾——这是不言自明的,但它对文件格式有很大帮助。
下面你可以看到我的 Notepad++ 布局:
最佳实践 #2:输入提示
更多信息来自我过去的帖子 这里 !
类型提示是那些感觉不是很 Pythonic 的功能之一,但是它们可以为您的代码增加很多价值——尤其是在创建公共包和库时!
使用图书馆 打字 , 类型提示允许程序员为函数的参数添加类型注释。当与大量函数字符串结合使用时,这些功能特别强大,因为它确保您的代码的用户可以理解这些函数,即使源代码是从它们中抽象出来的。
还记得之前的函数字符串吗?让我们重新审视它并添加类型提示:
def filter_systems(数据:pd.Dataframe,阈值:float,keep_duplicate:bool = False)
"""
一个简单的过滤器,用于删除低于用户定义的 x 值阈值的系统。
参数
----------
`data`:熊猫数据框
包含来自 xyz 数据集的系统的 pandas 数据框。必须包括列“x”和“y”。所有时间戳列都必须是时区感知的。
`阈值`:浮动
要应用于过滤器的 x 值的浮点阈值。必须在 1 到 10 之间。
`keep_duplicates`:布尔值
默认为假。确定是否应在过滤器中删除重复系统的布尔值。 退货
-------- `filtered_data` : 熊猫数据框
包含来自 xyz 数据集的过滤系统的 pandas 数据框。必须包括列“x”和“y”。所有时间戳列都必须是时区感知的。
"""
等等 viola,只需几个额外的字符就可以大大提升您的函数定义和代码的整体水平!
工具#3:皮林特
或者是皮林特的人类化身!
在重新查看我最近编写的脚本时,帮助我坚持最佳实践的首选工具是 皮林特 . Pylint 是一个静态代码分析器,它是我编写 Python 代码时工具库中最强大的工具之一。
Pylint 深入指出了必要的导入、过长的代码行以及糟糕的变量名。要在脚本上调用 Pylint,应运行以下命令:
皮林特<path_to_script.py>
这是它可以产生的示例;这是取自一个旧项目:
我最喜欢 Pylint 的一点是在输出末尾给出的评分 /10——这几乎使完善代码的过程游戏化,并允许用户在数字尺度上设置他们的代码标准!
最佳实践#3:消除那些 print() 语句
不仅仅是为了调试目的……
我们讨论过不使用 print() 语句进行调试,但我认为根本不应该使用它们——相反我选择使用 日志记录 陈述。同样,从标准 Python 库中,日志记录模块提供了一种更轻量级和可定制的方式来输出到终端。
记录的好处:
- 您可以根据严重性(即错误、警告等)区分您的日志记录。
- 如果您的代码与其他 Python 模块一起使用,则任何打印语句都不会清楚地表明它们来自哪里。
一个简单的示例可能如下所示:
>>> 导入日志
>>> logging.warning('小心!')
警告:根:小心!
结论
这就是我在编写行业标准 Python 代码时使用的 3 个工具和 3 个最佳实践!
还有很多可以用来升级你的代码,但这些是我认为最好的。
像往常一样感谢阅读,保重
〜伊桑
参考:
更多内容在 ** 纯英语.io** .注册我们的 ** 免费每周通讯** .跟着我们 ** 推特** , ** 领英** , ** YouTube** , 和 ** 不和谐** .
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通