Python操作的5个坏习惯,你中了几个呢?

news2024/10/3 0:30:50

很多文章都有介绍怎么写好 Python,我今天呢相反,说说写代码时的几个坏习惯。有的习惯会让 Bug 变得隐蔽难以追踪,当然,也有的并没有错误,只是个人觉得不够完美。

注意:示例代码在 Python 3.6 环境下编写

1、用列表作函数的默认参数

看下面这个例子

图片

正常我们期望的结果应该是这样的

图片

但当我们执行代码后,只会得到这样的结果

图片

与预期不一致。为什么呢?因为 Python 列表是可变对象,而且函数传参又是传的引用,所以当第二次调用 func 方法前,b 中已经有了元素 1,调用后 b 最终有两个元素 1 和 2。

示例中 func 方法比较简单,当发现问题的时候简单看下就能找到根源。但是,如果是在一个比较复杂的方法里面,你有可能会粗心的忽略这一点,从而会碰到一些莫名其妙的问题。

所以,当我们要为函数设置默认参数的时候,不要使用可变对象。

上面的代码改成这样就 OK 了

图片

2、文件操作

很多刚接触 Python 的伙伴做文件操作的时候很容易写类似的代码

图片

这没有问题,不过文件资源我们没有必要手动去维护,像关闭这样的操作交给上下文管理器做就好。

这样看起来不是清爽很多。

3、捕获所有异常

图片

就像上面一样,有时我们为了能够快速的完成功能,很容易不管三七二十一,就捕获 Exception 异常。这可能会捕捉到键盘中断(KeyboardInterrupt)(CTRL + C)或断言错误(AsstionError)等异常。

捕获不确定的异常,有时也会让我们的程序出现莫名其妙的问题,我们应该避免这样做。

准确的做法是根据上下文捕获 ValueError 、AttributeError 、TypeError 等比较具体的异常,然后做适当的错误处理,比如打印日志等。

4、忽略 Python 的 for…else 语法

开发中我们很容易碰到类似的需求,在一个列表中,确定某个特定的元素是否存在。比如,下面的代码便是确定列表中有没有奇数存在

图片

这里,我们使用了一个标识 is_odd_exist,默认为 False。当找到奇数时,将其置为 True,然后跳出循环。这样写并没有问题,但是我们可以换种方式

图片

先介绍下 Python 的 for…else 语法,当 for 循环是正常结束时(即不是通过 break 跳出结束的),会执行 else 中的语句。

这里,我们使用了相对于其他语言如 C、PHP 等不同的一种方式,完成了相同的功能,看起来代码也简洁了不少。

5、使用键遍历字典

初学 Python 的伙伴,可能容易写出这样的代码

图片

同样,这也是没有问题的,但看起来并不直观。字典遍历的时候,其实可以直接取出键值信息,像这样

这样的话,看起来要明了一些。

上面提到的几点有些带有自己一定的偏见,不要求大家都接受,选择合理的使用就好。

最后

在学习python中有任何困难不懂的可以微信扫描下方CSDN官方认证二维码加入python交流学习多多交流问题,互帮互助,这里有不错的学习教程和开发工具。
(python兼职资源+python全套学习资料)

在这里插入图片描述

读者福利:知道你可能对Python感兴趣,便准备了这套python学习资料
对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的。 一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案

包括:Python永久使用安装包Python web开发Python爬虫Python数据分析人工智能软件测试机器学习等学习教程。带你从零基础系统性的学好Python!

零基础Python学习资源介绍

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
在这里插入图片描述

👉Python必备开发工具👈

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉100道Python练习题👈

检查学习结果。
在这里插入图片描述

👉面试刷题👈

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

资料领取

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/337729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据与C(布尔类型和虚数和实数)

一._Bool类型(%d占位符) C99标准添加了_Bool类型,用于表示布尔值,既逻辑值true(1)和false(0)。原则上_Bool在原则上仅占用1位存储空间,因为对0和1而言,1位的…

数据与C(位,字节,进制转换和C数据内部存储)

程序的运行离不开数据,所以在本数据章节我们会比较详细的讲解不同数据的重要内容 本章主要讲解一些基础知识便于后面后面的数据类型学习,如果本章知识都懂的同学可以直接从下章开始阅读 目录 一.常量和变量 二.位,字节和字 三.四种进制形…

BI-SQL丨ALL、ANY、SOME

ALL、ANY、SOME ALL、ANY和SOME,这三个关键字,在SQL中使用频率较高,通常可以用来进行数据比较筛选。 注:SQL中ALL的用法和DAX中ALL的用法是完全不同的,小伙伴不要混淆了。 那么三者之间的区别是什么呢? A…

spring 笔记

一、spring概述 1.1 spring介绍 spring是一个轻量级的控制反转和面向切面的容器框架,用来解决企业项目开发的复杂度问题---解耦 轻量级:体积小,对代码没有侵入性控制反转:IOC inverse of control, 把创建对象的工作交…

JUC并发编程Ⅰ -- Java中的线程

文章目录线程与进程并行与并发进程与线程应用应用之异步调用应用之提高效率线程的创建方法一:通过继承Thread类创建方法二:使用Runnable配合Thread方法三:使用FutureTask与Thread结合创建查看进程和线程的方法线程运行的原理栈与栈帧线程上下…

MAC Boook打印长图

有时老师给留的作业是一张长图,直接打印或者通过把图放入word打印都不能实现把长页分成多页进行打印。通过网上找到思路可以通过EXCEL实现将长图分成多页打印。 测试版本 macos:ventura 13.1 office 365 注:同样适用windows版本的excel 第…

cass10.1+鸿业生成平纵横数据

cass10.1鸿业生成平纵横数据前言1 纵断面数据获取1.1 数据准备1.2 纵断面桩号设置(1)桩号设置(2)桩号标注(3)标注显示1.3 高程数据处理1.4 纵断面里程标高文件生成2. cass10.1生成横断面数据2.1 生成横断面…

区块链技术与应用2——BTC-数据结构

文章目录比特币中的数据结构1. 区块链(block chain)2. 默克尔树(Merkle tree)3.哈希指针的问题比特币中的数据结构 1. 区块链(block chain) 哈希指针: (1)保存数值的位置…

基于 Python 实时图像获取及处理软件图像获取;图像处理;人脸识别设计 计算机毕设 附完整代码+论文 +报告

界面结果:图像获取;图像处理;人脸识别 程序结构设计 图形用户界面设计与程序结构设计是互为表里的。或者说,程序结构设计是软件设计最本质、最核心的内容。徒有界面而内部逻辑结构混乱的软件一无是处。 Windows 操作系统是一款图形化的操作系统,相比于早期的计算机使用的命…

XXL-JOB 任务调度平台实践

XXL-JOB 任务调度平台实践一、调度中心(服务端)1、从gitbub 获取项目源码:[https://github.com/xuxueli/xxl-job](https://github.com/xuxueli/xxl-job)2、从源码中得到SQL脚本创建和初始化数据库3、Maven 编译打包 xxl-job-admin 并部署为调度中心4、启动运行 xxl-…

Linux 编译器 gcc/g++

本文已收录至《Linux知识与编程》专栏! 作者:ARMCSKGT 演示环境:CentOS 7 目录 前言 正文 gcc/g常用命令 自定义可执行程序名命令-o 预处理指令-E 编译指令-S 汇编指令-c 链接指令gcc 命令巧记口诀 链接库 动态库-动态链接 静态库…

双11大型互动游戏“喵果总动员” 质量保障方案总结

推荐语:互动游戏是一个系统化工程,在笔者的“喵果总动员”质量方案中,可以看到为保障用户体验,我们在各个难点的解决方案, 例如:用线上压测能力支持业务及时调整各服务容量、通过强化学习覆盖游戏行业的测试…

设计师一定要知道这几个网站,解决你80%的设计素材。

本期推荐一波设计师必备的设计素材网站,设计党赶紧马住!能解决你日常设计中80%的素材。 1、菜鸟图库 菜鸟图库-免费设计素材下载 这是一个为新手设计师提供免费素材的设计网站,站内有超多平面模板、海报、UI设计、电商设计等相关素材&#x…

数据与C(浮点数)

目录 一.基本概念 二.声明和初始化 三.浮点数上溢和下溢 浮点数在数据类型上一共就两个,一个是float,另一个是double。但两个唯一的区别就在于double精度方面是float的两倍 一.基本概念 首先介绍浮点数的三种书写形式 第一种 数字 :103…

K近邻算法和KD树详细介绍及其原理详解

相关文章 K近邻算法和KD树详细介绍及其原理详解 文章目录相关文章前言一、K近邻算法二、KD树总结前言 K近邻算法一般是我们学习机器学习的入门算法,本篇文章详细介绍了K近邻算法,并对其原理进行了说明。同时,为了优化K近邻算法查找最近K个邻…

Spring工厂模式

解决方案1:工厂模式 可以使用抽象工厂模式,让StudentDao、StudentService的实现在在工厂中生成,而工厂可以根据配置 文件的指定类型来创建不同的对象,而且工厂本身一般是不变的。从而降低了对可以变的业务逻辑类的 依赖,接近的软…

字节青训前端笔记 | 数据可视化基础

本课程主要内容可以分为三个章节: 数据可视化的基本概念可视化设计的基本原则面向前端的可视化工具 本手册可以作为学生学习数据可视化的“学习指南”,按照手册所列内容,结合扩展资料进行系统的学习和实践。本课程没有讨论更为前沿的可视化…

推荐5款干净又实用的软件

我们在使用电脑的时候,总是会用到一些好用的软件,今天分享这5款干净又实用的软件,实在是太好用了,我不允许你不知道。 1.桌面工具——火柴 火柴是一款集快速搜索,程序启动、本地文件查找、网站直达、网络搜索等多种功…

OSACN-Net:使用深度学习和Gabor心电图信号谱图进行睡眠呼吸暂停分类

这篇文章在之前读过一次,其主要的思路就是利用Gabor变换,将心电信号转变为光谱图进行识别研究,总体来讲,不同于其他的利用心电信号分类的算法,该论文将心电信号转换为光谱图,在此基础上,分类问题…

java面试题(二十)中间件redis

1.1 Redis可以用来做什么? 参考答案 Redis最常用来做缓存,是实现分布式缓存的首先中间件;Redis可以作为数据库,实现诸如点赞、关注、排行等对性能要求极高的互联网需求;Redis可以作为计算工具,能用很小的…