首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第4章 选择易懂的名称
4.1 命名风格
4.2 PEP 8 的命名风格
4.3 适当的名称长度
4.3.1 太短的名称
4.3.2 太长的名称
4.4 起易于搜索的名称
4.5 避免笑话、双关语和需要文化背景才能理解的词汇
4.6 不要覆盖内置名称
4.7 史上最差的变量名
第5章 揪出代码的坏味道
5.1 重复的代码
5.2 魔数
5.3 注释掉的代码和死代码
5.4 打印调试
5.5 带有数字后缀的变量
5.6 本该是函数或者模块的类
5.7 嵌套列表解析式
5.8 空的except块和糟糕的错误信息
5.9 代码坏味道的谬误
5.9.1 谬误:函数应该仅在末尾处有一个return语句
5.9.2 谬误:函数最多只能有一个try语句
5.9.3 谬误:使用flag参数不好
5.9.4 谬误:全局变量不好
5.9.5 谬误:注释是不必要的
第6章 编写Python 风格的代码
6.1 Python 之禅
6.2 学着喜欢强制缩进
6.3 使用timeit模块衡量性能
6.4 常被误用的语法
6.4.1 使用enumerate()而不是range()
6.4.2 使用with 语句代替open()和close()
6.4.3 用is 跟None 做比较而不用==
6.5 格式化字符串
6.5.1 如果字符串有很多反斜杠,请使用原始字符串
6.5.2 使用f-string 格式化字符串
6.6 制作列表的浅副本
6.7 以Python 风格使用字典
6.7.1 在字典中使用get()和setdefault()
6.7.2 使用collections.defaultdict()设置默认值
6.7.3 使用字典代替switch 语句
6.8 条件表达式:Python“丑陋”的三元运算符
6.9 处理变量的值
6.9.1 链式赋值和比较运算符
6.9.2 验证变量是否为多个值中的一个
当前位置:
首页>>
技术小册>>
Python编程轻松进阶(二)
小册名称:Python编程轻松进阶(二)
### 4.6 不要覆盖内置名称 在Python编程的广阔天地中,遵循最佳实践是提升代码质量、可读性和可维护性的关键。其中,“不要覆盖内置名称”这一原则尤为重要,它直接关系到代码的清晰度和潜在的运行时错误。本章节将深入探讨这一原则的重要性、具体表现、如何避免以及违反该原则可能带来的后果。 #### 4.6.1 重要性阐述 Python拥有丰富的内置函数、异常、类型等,这些内置元素构成了Python语言的核心框架,为开发者提供了强大的编程能力。内置名称(如`len`、`str`、`list`、`Exception`等)是Python解释器预定义的,它们在全局命名空间中可直接访问,无需导入任何模块。覆盖这些内置名称,即在同一作用域内定义与内置名称同名的变量、函数或类,会隐藏原有的内置实现,导致代码行为异常,甚至引发难以追踪的错误。 #### 4.6.2 具体表现 1. **覆盖内置函数**: ```python # 错误示例:覆盖内置函数len len = 5 # 现在len不再指向内置的len函数 print(len([1, 2, 3])) # TypeError: 'int' object is not callable ``` 在这个例子中,`len`被重新赋值为整数5,导致原本用于计算长度的内置函数`len`无法被正确调用。 2. **覆盖内置类型**: ```python # 错误示例:覆盖内置类型list list = "I am not a list" my_list = list() # TypeError: 'str' object is not callable ``` 这里,`list`被重新赋值为字符串,尝试使用`list()`创建列表时会引发类型错误,因为字符串没有`__call__`方法。 3. **覆盖内置异常**: ```python # 错误示例:覆盖内置异常ValueError ValueError = "This is not an exception" try: raise ValueError("Something went wrong") # NameError: name 'ValueError' is not defined except ValueError as e: print(e) ``` 在这个例子中,尝试抛出`ValueError`时,由于`ValueError`已被覆盖为字符串,Python解释器无法识别其为异常类型,从而引发`NameError`。 #### 4.6.3 如何避免 1. **使用有意义的命名**: 避免使用Python的内置名称作为变量名、函数名或类名。选择描述性强、易于理解的名称,即使它们稍长一些。 2. **使用前缀或后缀**: 如果确实需要定义与内置名称相似的名称,可以考虑添加前缀(如`my_`、`custom_`)或后缀(如`_custom`、`_ext`)来区分。 3. **使用命名空间**: 对于复杂的项目,利用模块或包来组织代码,可以有效避免命名冲突。将自定义的函数、类等封装在模块内部,通过模块名作为命名空间的一部分来访问它们。 4. **代码审查**: 定期进行代码审查,检查是否有意无意地覆盖了内置名称。这不仅可以防止此类错误,还能提升代码的整体质量。 5. **使用IDE或代码检查工具**: 现代集成开发环境(IDE)和代码检查工具(如PyLint、Flake8)通常能够识别并警告潜在的命名冲突,利用这些工具可以显著提高编码效率和质量。 #### 4.6.4 违反原则的后果 - **难以调试**:当内置名称被覆盖后,代码中的错误可能变得难以追踪。特别是当错误发生在大型项目或复杂逻辑中时,定位问题可能需要花费大量时间。 - **降低代码可读性**:使用内置名称作为变量名或函数名会混淆代码的意图,降低代码的可读性,使得其他开发者(或未来的你)难以理解代码的逻辑。 - **破坏代码兼容性**:在某些情况下,覆盖内置名称可能会破坏代码的兼容性,特别是当代码需要与其他库或框架交互时。 - **性能影响**:虽然直接的性能影响可能不明显,但由于代码逻辑混乱和错误频发,间接地可能导致性能下降,因为系统需要花费更多资源来处理异常和错误。 #### 4.6.5 结论 “不要覆盖内置名称”是Python编程中一条简单却至关重要的原则。遵循这一原则,可以显著提升代码的质量、可读性和可维护性。作为Python开发者,我们应当时刻牢记这一原则,并在实践中加以应用。通过合理的命名、利用命名空间、进行代码审查和借助工具辅助,我们可以有效地避免覆盖内置名称的问题,编写出更加健壮、清晰的Python代码。
上一篇:
4.5 避免笑话、双关语和需要文化背景才能理解的词汇
下一篇:
4.7 史上最差的变量名
该分类下的相关小册推荐:
Python编程轻松进阶(五)
Python合辑4-130个字符串操作示例
Python合辑3-字符串用法深度总结
Python3网络爬虫开发实战(上)
Python合辑2-字符串常用方法
Python合辑6-字典专题
Python合辑7-集合、列表与元组
Python自动化办公实战
Python合辑10-函数
Python机器学习基础教程(下)
Python爬虫入门与实战开发(上)
实战Python网络爬虫