0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

初学者开发人员都会犯的7个Python错误

如意 来源:百家号 作者: Victer情报局 2020-06-23 15:19 次阅读

这篇文章主要介绍了七个初学者常犯的Python调试错误,并告诉大家如何去避免这些错误。

1.具有副作用的功能

由于Python不是像Haskell这样的纯函数式语言,因此会产生副作用。 严格来说,这不是一个错误,但是很容易无意间手忙脚乱。 下面的示例演示了该问题。

初学者开发人员都会犯的7个Python错误

在Python中,对象是引用类型。 因此,当您将列表作为参数传递时,将传递引用而不是值。 这意味着,如果您在函数中更改它们,则更改将反映在外部。

这可能会导致一些非常令人讨厌的意外情况和浪费我们的时间去调试。 请及时提防这些错误,减少麻烦。

2.默认参数中的函数调用

默认参数有时很难使用。 看一下以下内容。

初学者开发人员都会犯的7个Python错误

为什么每次调用的返回值都一样? 原因是在定义函数时,Python会在默认参数中计算表达式。 如果要动态生成默认参数,则可以执行以下操作。

初学者开发人员都会犯的7个Python错误

3.可变的默认参数

此问题是以上两个的结合。 您是否遇到过以下情况?

初学者开发人员都会犯的7个Python错误

这里发生两件事。

1.定义函数后,Python会对表达式[[]求值。 (这相当于调用list()。)

该对象的引用绑定到参数。 因此,无论何时调用该函数,都将使用相同的对象。

2.因此,使用可变对象作为默认参数不是一个好主意。 你绝对不应该那样做。

4. 参考覆盖

如我们所见,每个对象都是Python中的引用类型。 除了将它们传递给函数之外,这还可能引起一些混乱。 请参见以下示例:

初学者开发人员都会犯的7个Python错误

当执行b = a时,实际上存储了a的引用。 因此,a和b指向同一对象。 要解决此问题,您应该使用内置的Deepcopy功能。 这将所有值类型的属性递归复制到新变量中。

初学者开发人员都会犯的7个Python错误

如果使用整数而不是list尝试相同的操作,则所有操作的行为都将与您期望的一样。 原因是整数类型是不可变的,因此在更改它们时会覆盖引用。

5.从东西导入*

我知道,我们都做到了这一点。 这有几个缺点。

首先,不同名称空间中的函数可以具有相同的名称,从而导致整个代码库混乱。

其次,当您在Python中导入模块时,该模块中的所有代码都将被执行。 如果有很多子模块要导入,这会大大降低速度。 因此,如果仅导入NumPy以生成随机数,则最好使用下面方法:

初学者开发人员都会犯的7个Python错误

than

初学者开发人员都会犯的7个Python错误

6.使用字符串串联连接路径

假设您必须从变量data_folder给定的文件夹中打开一个名为data.csv的文件。 应该如何确定文件路径? 如果你在做:

初学者开发人员都会犯的7个Python错误

那你做错了。 例如,这在Windows上将不起作用。 您可能没有经验,但是使用不同开发设置的你的同事肯定会感到痛苦。

为了解决这个问题,您应该使用Python的内置工具pathlib或简单地使用os.path.join函数:

初学者开发人员都会犯的7个Python错误

7. 测试覆盖率低

这是一个高水平的问题。 尤其是当您是初学者时,单元测试的好处尚不清楚。 但是,每个经验丰富的开发人员都可以告诉您,这是绝对必要的。 使用未经测试的代码就像打个模子:修复一个错误,引入另一个错误。

为了避免这些错误,从项目的开始就应该注意。 添加功能(甚至功能)后,应立即编写测试用例以验证能否跑通。 有很多很棒的库,例如内置的unittest或非常流行的pytest。

应该认真投入时间来测试您的代码。 这样做可能需要一些时间,但这是一项长期投资。 您将节省更多的调试时间。

简而言之,这是您在Python中可能犯的七个最痛苦的错误。 在追求Python熟练度的过程中,您肯定还会遇到更多。 但是,有了本指南,您将有知识来避免这些出现最频繁的错误。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    88

    文章

    3615

    浏览量

    93710
  • python
    +关注

    关注

    56

    文章

    4795

    浏览量

    84661
收藏 人收藏

    评论

    相关推荐

    XD08M3232红外感应单片机开发板适合初学者吗?

    和可用性 在考虑是否适合初学者时,价格和可用性也是一重要因素。如果一开发板价格过高或者难以购买,那么它可能不适合初学者。根据搜索结果,X
    发表于 12-07 14:55

    MSPDebugStack开发人员指南

    电子发烧友网站提供《MSPDebugStack开发人员指南.pdf》资料免费下载
    发表于 12-05 14:49 0次下载
    MSPDebugStack<b class='flag-5'>开发人员</b>指南

    如何修正初学者使用加热台时最容易错误,内含新品偷跑【MINIWARE】

    行业资讯
    易迪赛智能科技
    发布于 :2024年11月27日 14:13:37

    C++新手容易的十编程错误

    简单的总结一下 C++ 新手容易的一些编程错误,给新人们提供一参考。 1 有些关键字在 cpp 文件中多写了 对于 C++ 类,一些关键字只要写在 .h 中就好,cpp 中就不用再加上了,比如
    的头像 发表于 11-15 12:42 341次阅读

    对比Python与Java编程语言

    Python与Java都是目前非常流行的编程语言,它们各有其独特的优势和适用场景。以下是对这两种编程语言的对比: 一、语法和易用性 Python 语法简洁,代码更易读,非常适合初学者。 动态类型系统
    的头像 发表于 11-15 09:31 300次阅读

    C2000 ePWM开发人员指南

    电子发烧友网站提供《C2000 ePWM开发人员指南.pdf》资料免费下载
    发表于 09-07 09:45 0次下载
    C2000 ePWM<b class='flag-5'>开发人员</b>指南

    我用的是multisim14.0,因为是初学者,仿真电路的时候找不到合适的模型,应该怎么办?

    我用的是multisim14.0,因为是初学者,仿真电路的时候找不到合适的模型,应该怎么办? 比如我电路用的是AO3400的NMOS,但是在multisim14.0软件自带的元件库里面没找到类似的,开启电压是1.5v的nmos,请教大家,应该怎么办?
    发表于 08-23 10:59

    如何在Python开发人工智能

    Python开发人工智能(AI)是一广泛而深入的主题,它涵盖了从基础的数据处理到复杂的机器学习、深度学习以及自然语言处理等多个领域。
    的头像 发表于 07-15 15:01 2158次阅读

    适合初学者的嵌入式项目有哪些?

    适合初学者的嵌入式项目有哪些? 嵌入式学习是一实践性很强的领域,通过实际项目可以帮助你巩固理论知识并提升技能。以下是几个适合初学者练手的嵌入式项目,每个项目都涵盖了从硬件到软件的不同层面
    发表于 07-11 10:23

    初学者必看:破解PCB设计常见错误

    在新手开始PCB设计时,通常将该过程视为简单的“连接点”:只要建立了连接,如何建立这些连接并不是特别重要。不幸的是,这与事实相去甚远。作为PCB设计工程师,尤其是随着电子设备速度的不断提高和排放标准的严格,我们需要关注PCB和互连的最复杂的细节。如果我们粗心大意,我们就有可能面临信号完整性差和电磁兼容性差的风险。在过去的几年里,我们遇到了相当多的其他PCB设
    的头像 发表于 06-21 18:22 1578次阅读
    <b class='flag-5'>初学者</b>必看:破解PCB设计常见<b class='flag-5'>错误</b>!

    鸿蒙ArkUI-X跨平台技术:【开发准备】

    本文档适用于ArkUI跨平台应用开发初学者。通过开发环境搭建、应用工程创建、编译和运行,熟悉ArkUI跨平台应用开发基本流程。
    的头像 发表于 05-24 10:40 469次阅读
    鸿蒙ArkUI-X跨平台技术:【<b class='flag-5'>开发</b>准备】

    三星停止自动驾驶研究,开发人员转到机器人领域

    近日,三星电子宣布了一项重要的研发战略调整。据业内人士透露,三星先进技术研究院(SAIT)已决定停止自动驾驶汽车的研究,并将这一领域的开发人员转移到机器人领域。
    的头像 发表于 05-13 09:21 435次阅读

    国内哪家的FPGA适合初学者

    如题,想着手学习FPGA的话,国内哪家的比较好,更适合初学者学习?这方面的经验,是一点都没。
    发表于 04-14 19:17

    初学者请问各位大佬

    为什么在89C51单片机中R1可以提供低地址 在外部扩展RAM中不是P0口提供低8位地址P2口提供高8位地址吗初学者有些不理解望各位大佬解答一下谢谢
    发表于 02-23 16:39

    请问初学者要怎么快速掌握FPGA的学习方法?

    对于初学者 FPGA的编程语言是什么? FPGA芯片的基础结构也不了解. FPGA开发工具的名称和使用方法都不知道. 要学的很多啊,请问有什么自学的学习方法么?
    发表于 01-02 23:01