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熟练度的过程中,您肯定还会遇到更多。 但是,有了本指南,您将有知识来避免这些出现最频繁的错误。

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

    关注

    90

    文章

    3730

    浏览量

    97555
  • python
    +关注

    关注

    59

    文章

    4892

    浏览量

    90484
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    面向测量初学者的入门专栏:为什么要测量声音和振动?

    面向测量初学者的入门专栏:为什么要测量声音和振动?您有没有想过,其实我们每天都生活在各种“声音”和“振动”之中?这些复杂交织的声音和振动,如果按照频率(也就是声音的高低)进行分解,并分析其大小、甚至
    的头像 发表于 04-17 09:51 546次阅读
    面向测量<b class='flag-5'>初学者</b>的入门专栏:为什么要测量声音和振动?

    关于TNC同轴线缆结构:这是一篇被很多射频初学者忽视的干货文

    很多射频初学者常将TNC接口视作BNC的“螺纹加强版”,却忽略了其内部严丝合缝的物理结构对信号传输的决定性影响。本文深度拆解TNC同轴线缆的四大核心层:从利用集肤效应的中心导体,到决定特征阻抗
    的头像 发表于 04-16 16:19 174次阅读
    关于TNC同轴线缆结构:这是一篇被很多射频<b class='flag-5'>初学者</b>忽视的干货文

    国产DSP/FPGA选型、环境搭建与初学者调研全指南

    作为全国产解决方案的标杆,其核心选型(长城银河FT-M6678N DSP、复旦微JFM7VX690T36 FPGA)、开发环境搭建,以及适配初学者的调研路径,都值得细细拆解。更关键的是,芯片与板卡在实际使用中的各类问题、易忽略的
    的头像 发表于 03-10 18:52 1070次阅读
    国产DSP/FPGA选型、环境搭建与<b class='flag-5'>初学者</b>调研全指南

    软件定制开发人员相关的公司有哪些

    软件
    北京华盛恒辉科技
    发布于 :2026年03月02日 20:32:34

    AI端侧部署案例(SC171开发套件V2-FAS)

    AI端侧部署案例(SC171开发套件V2-FAS) 序列 课程名称 视频课程时长 视频课程链接 课件链接 工程源码 1 初学者入门手写数字识别案例 32分21秒 https
    发表于 02-11 12:08

    AI端侧部署案例(SC171开发套件V3)2026版

    AI端侧部署案例(SC171开发套件V3)2026版 序列 课程名称 视频课程时长 视频课程链接 课件链接 工程源码 1 初学者入门手写数字识别案例 25分29秒 https
    发表于 01-15 10:40

    linux-arm开发环境的简单配置

    都会给你解释(很多视频都不会给你解释),适合初学者。 fedora8开发环境简单配置 linux-arm开发环境简单配置 Window上: 安装终端软件 SecureCRT,
    发表于 01-13 07:56

    嵌入式软件开发的 10 技巧分享

    一上来就想写代码的冲动至关重要,应首先用流程图制定一软件架构图。这样的方**使开发人员对应用所需的不同部分与组件形成一概念,就像电路逻辑图可以告诉工程师需要哪些硬件元件一样。这样可确保程序整体建立在
    发表于 12-25 06:04

    FPGA初学者求助

    Vivado2025.1配置MIG时出现报错 大家好,我是一名研一的学生,同时也是一名FPGA初学者,最近在使用vivado2025.1配置MIG的时候遇到了问题,具体问题如下: 我这个mig的配置
    发表于 12-07 11:43

    Bourns 深耕印度,在地设计 - Bourns 印度设计中心 为开发人员提供当地先进技术资源助力客户加速创新!

    班加罗尔 (Bengaluru) 正式成立首座设计中心。此新中心将作为以客户协作与创新为核心的研发枢纽,为当地开发人员提供完整的设计工具与技术支持,包括运用 Bourns 具业界领先地位的电源与保护组件之参考设计专业服务。 Bourns 印度设计中心采用成熟流程,协助客户快速进
    的头像 发表于 11-19 14:26 818次阅读
    Bourns 深耕印度,在地设计 - Bourns 印度设计中心 为<b class='flag-5'>开发人员</b>提供当地先进技术资源助力客户加速创新!

    恩智浦FRDM i.MX 8M Plus开发板详解

    开发高级HMI应用、计算机视觉系统以及边缘AI项目时,开发人员常常面临一共同挑战:如何在不依赖昂贵且复杂的开发平台的前提下,获得足够的处理能力。这正是FRDM i.MX 8M Pl
    的头像 发表于 11-18 15:07 1801次阅读

    嵌入式开发的关键点介绍

    嵌入式开发在现代科技中扮演着非常重要的角色。随着物联网的发展,嵌入式系统的需求也越来越大。嵌入式开发不仅需要开发人员具备深入的硬件知识和编程经验,还需要不断学习新的技术和工具,以满足不断变化的需求
    发表于 11-13 08:12

    Pico Technology发布Python软件包pyPicoSDK

    现有 PicoSDK 的基础上构建,使工程师、开发人员和业余爱好者能够创建 Python 脚本,更加快速方便地控制其 PicoScope 设备。
    的头像 发表于 09-29 15:03 1186次阅读

    初学者指南:树莓派上搭建虚拟环境!

    在这篇简明扼要的指南中,我们将探讨如何在树莓派上设置和使用虚拟环境(或称为Venv)——包括在终端和Thonny集成开发环境中。使用Bookworm操作系统或更高版本时,或在尝试安装Python
    的头像 发表于 07-27 13:24 1263次阅读
    <b class='flag-5'>初学者</b>指南:树莓派上搭建虚拟环境!

    避雷!树莓派初学者常犯的5错误

    如果你刚刚入手树莓派,你就会知道它潜力无穷,几乎能实现你想到的任何功能。然而,这种自由也让你可能在不知不觉中做出对系统有害的操作。在本文中,我将介绍要避免哪些错误初学者最常犯的错误
    的头像 发表于 07-22 17:16 1684次阅读
    避雷!树莓派<b class='flag-5'>初学者</b>常犯的5<b class='flag-5'>个</b><b class='flag-5'>错误</b>!