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

本文讨论了编写Python代码时应避免的五个常见坏习惯,包括:使用可变对象作为函数默认参数、不当的文件操作、过度捕获异常、忽视for…else语法以及不直观的字典遍历。作者提倡采用更清晰、更安全的编码风格以提高代码质量。
摘要由CSDN通过智能技术生成

很多文章都有介绍怎么写好 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学习指南


如果你对Python感兴趣,想通过学习Python获取更高的薪资,那下面这套Python学习资料一定对你有用!

资料包括:Python安装包+激活码、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。0基础小白也能听懂、看懂,跟着教程走,带你从零基础系统性地学好Python!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述
二、Python学习软件

工欲善其事,必先利其器。学习Python常用的开发软件都在这里了!
在这里插入图片描述
三、Python入门学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

四、Python练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

五、Python实战案例

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

六、Python面试资料

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述
七、资料领取

上述完整版Python全套学习资料已经上传CSDN官方,需要的小伙伴可自行微信扫描下方CSDN官方认证二维码免费领取

### 如何在 Python 中区分开发环境和生产环境 为了实现 Python 应用程序能够根据当前所处的环境(开发、测试或生产)加载相应的配置,可以采用多种方法。以下是几种常见的做法: #### 使用环境变量检测 一种常见的方式是利用操作系统中的环境变量来指示应用程序处于哪个环境中。这种方法简单直观,并且易于维护。 可以通过 `os` 模块读取环境变量并基于其值调整行为。例如,在 Django 或 Flask 的项目中,可以在项目的入口文件或者配置文件中加入如下逻辑: ```python import os ENVIRONMENT = os.getenv('APP_ENV', 'development') # 默认为 development if ENVIRONMENT == 'production': from settings_production import * elif ENVIRONMENT == 'testing': from settings_testing import * else: from settings_development import * ``` 这里的关键在于设置一个名为 `APP_ENV` 的环境变量[^2]。当该应用被部署到不同服务器时,管理员只需更改这一变量即可让应用知道它应该使用哪种类型的配置。 #### 利用独立配置文件 另一种方式则是创建多个单独的配置文件分别对应各个环境下的需求——比如数据库连接字符串、调试标志等参数可能都会有所不同。之后再由主配置文件依据实际运行状况引入合适的子集。 假设我们有三个这样的配置文件:`config_dev.py`, `config_test.py`, 和 `config_prod.py`. 我们还可以进一步简化上述过程,通过动态导入指定名称的空间对象完成初始化工作: ```python def get_config(): env = os.environ.get("FLASK_ENV", "dev") config_map = { "prod": ProdConfig, "test": TestConfig, "dev": DevConfig } return config_map[env]() ``` 这样做的好处是可以保持每种环境下特定设定清晰可见的同时减少重复代码量[^1]. #### 结合虚拟环境管理工具 对于更复杂的场景来说,除了单纯依靠外部信号外,也可以考虑结合像 VirtualEnv 这样的隔离技术构建专属于某个版本号甚至分支路径上的依赖关系集合体。如此一来即使是在同一台机器上也能轻松模拟多套相互独立的工作流而互不影响[^3]. 最终选择何种策略取决于具体业务复杂度以及团队协作习惯等因素综合考量后的结果. ```python # Example of setting up environment variables in Unix-like systems (Linux/MacOS) export APP_ENV=production # In Windows Command Prompt set APP_ENV=production ``` 以上展示了如何借助操作系统的功能配合简单的脚本控制达到灵活切换的目的.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值