Python技巧:如何处理未完成的函数

news/2024/10/4 20:17:36 标签: 前端, python, 开发语言

一、问题的提出

写代码的时候,我们有时候会给某些未完成的函数预留一个空位,等以后有时间再写具体内容。通常,大家会用 pass 或者 ... (省略号)来占位。这种方法虽然能让代码暂时不报错,但可能在调试的时候让人忘了这里还有代码没写完,结果引发一些难找的问题。

python">def mi_funcion():
    pass  # 以后再补上具体代码

或者

python">def mi_funcion():
    ...  # 还没写好,留个空

这样写,当你以后运行这段代码时,程序不会给你任何提示或者直接返回N。如果你忘了实现它,也不会报错。等到后来出问题了,你可能还得花时间debug。如下面的图,直接返回None。

二、解决办法

相比之下,可以使用raise 加上NotImplementedError ,显式地抛出错误信息,这样或许就更好。当你调用这个没完成的函数时,程序会直接告诉你:“这里有代码没写完,稍后补上!”

这样不仅容易发现报错问题,还能让你迅速定位到程序哪里出了错。

示例代码:

python">def mi_funcion():
    raise NotImplementedError("代码还没写,稍后补上")

这样当你运行上述程序时,就会得到以下报错信息。

python">>>> mi_funcion()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NotImplementedError: 代码还没写,稍后补上

这样操作,有如下好处:

  • 提示明确:下次调用这个函数时,错误信息会告诉你这个功能还没实现。
  • 防止疏忽:防止你或者其他人不小心用到没写完的代码,而不知道它其实还没完成。
  • 更容易调试:当你看到错误提示时,可以快速找到问题所在,省去排查的麻烦。

三、学后总结

设置还没有代码的函数,与其用 pass 或者 ... 来占位,不如直接用raise抛出一个 NotImplementedError。

这不仅能让你及时发现还没完成的功能,减少debug的时间,也能避免一些潜在的问题。以后再修改这串代码时,你会感谢自己做了这个选择!

这个小技巧不仅适合自己用,还非常适合团队协作时使用,能让大家更清楚代码状态,减少调试时的困扰。


http://www.niftyadmin.cn/n/5690303.html

相关文章

搞懂域名系统,域名,顶级域名及子域名的秘密!

什么是域名系统和域名? 在互联网的世界里&#xff0c;域名系统是不可或缺的一部分。它为每个网站或网络服务赋予了唯一的标识符&#xff0c;使得人们可以通过这些标识符来访问和浏览信息。 ICANN 互联网名称与数字地址分配机构&#xff08;ICANN&#xff09;是一个非营利组…

vSAN01:vSAN简介、安装、磁盘组、内部架构与调用关系

目录 传统的共享存储vSAN存储OSA的系统要求vSAN安装vSAN集群vSAN skyline healthvSAN与HA磁盘组混合磁盘架构全闪磁盘架构 vSAN对象vSAN内部架构 传统的共享存储 通过隔离的存储网络使得不同的ESXi主机访问独立的存储设备。需要前期投入较高的资金单独采购存储、网络可以单独规…

集合框架01:集合的概念、Collection体系、Collection接口

1.集合的概念 集合是对象的容器&#xff0c;定义了多个对象进行操作的常用方法。可实现数组的功能。 集合和数组的区别&#xff1a; 1.数组长度固定&#xff0c;集合长度不固定&#xff1b; 2.数组可以存储基本类型和引用类型&#xff0c;集合只能存储引用类型&#xff1b; …

深入理解Linux内核网络(一):内核接收数据包的过程

在应用层执行read调用后就能很方便地接收到来自网络的另一端发送过来的数据&#xff0c;其实在这一行代码下隐藏着非常多的内核组件细节工作。在本节中&#xff0c;将详细讲解数据包如何从内核到应用层&#xff0c;以intel igb网卡为例。 部分内容来源于 《深入理解Linux网络》…

算法日记-链表翻转

文章目录 场景&#xff1a;解法一&#xff1a;迭代步骤完整代码 解法二&#xff1a;递归步骤完整代码 重温力扣常规算法&#xff0c;记录算法的演变&#xff0c;今天介绍的是链表翻转 场景&#xff1a; 现在有一条单项链表&#xff0c;链表节点存在一个数据和指向下一个节点的…

【Matlab绘图】从Excel导入表格并进行三维绘图

前言 今天手头上拿到一份论文的xlsx数据&#xff0c;要求使用MATLAB绘制进行三维图标坐标绘制。那么我们来看看如何使用如下数据进行绘图。 如上数据所示&#xff0c;数据是一个30行25列的数据&#xff0c;数据的内容是论文某项模型模拟的结果&#xff0c;我们希望把横坐标x取…

jdk 相关网址

官方资源&#xff1a; OpenJDK: https://openjdk.org/ OpenJDK 官方网站 (https://openjdk.org/) 是 Java 开发者的重要资源。以下是该网站的主要内容和功能&#xff1a; 项目概览 OpenJDK 的介绍和目标最新版本信息 下载 源代码下载预构建二进制文件链接 文档 开发者指南AP…

【SpringBoot详细教程】-09-Redis详细教程以及SpringBoot整合Redis【持续更新】

🌲 Redis 简介 🌾 什么是Redis Redis 是C语言开发的一个开源高性能键值对的内存数据库,可以用来做数据库、缓存、消息中间件等场景,是一种NoSQL(not-only sql,非关系型数据库)的数据库 Redis是互联网技术领域使用最为广泛的存储中间件,它是「Remote DictionaryServic…