当前位置:首页>java>Python 15 个编程坏习惯!90% 的人都中招了,你呢?

Python 15 个编程坏习惯!90% 的人都中招了,你呢?

  • 2026-10-21 13:29:21
Python 15 个编程坏习惯!90% 的人都中招了,你呢?

Python 作为一门功能强大的编程语言,很多人在编写代码的过程中,难免会养成一些不良的编程习惯。今天就带大家梳理 Python 编程里的那些「雷区」,学会避开这些会拉低代码可读性、运行效率与可维护性的坑,帮你写出更地道的 Pythonic 优雅代码。

1.手动进行字符串格式化

2.手动关闭文件

3.使用裸except子句

4.默认参数使用可变对象

5.不会使用推导式

6.使用type(x)检查类型

7.使用==判断是否为None,True或False

8.使用bool(...)或len(...)进行条件检查

9.使用range(len(...)),而不是enumerate

10.不了解字典的items方法

11.不使用元组解包

12.使用time()进行代码计时

13.在生产环境使用print语句而不是日志

14.使用import*导入模块

15.不使用原始字符串

1.手动进行字符串格式化

#坏习惯

name = "Alice"

greeting = "Hello,"+ name+"!"

#好习惯

name = "Alice"

greeting = f"Hello,{name}!"

理由:用 + 号做字符串拼接,不仅会让代码的可读性大打折扣,在代码逻辑复杂的场景下还极易出现错误;相较之下,f-string 语法的可读性会优异很多,书写也更友好。

2.手动关闭文件

#坏习惯

file = open("example.txt","r")

content = file.read()

file.close()

#好习惯

with open("example.txt","r") as file:

       content = file.read()

理由:手动关闭文件的方式很容易被遗忘,而利用上下文管理器(with 语句),会在代码块执行结束后自动完成文件关闭操作;即便代码运行触发异常,文件也能被妥善处理关闭,安全性与可靠性都更有保障。

3.使用裸 except 子句

#坏习惯

try:

       result = 10 / 0

except:

       print("Error occurred")

#好习惯

try:

       result = 10 / 0

except ZeroDivisionError:

       print("Error occurred")

理由:使用裸 except 会捕获程序中所有类型的异常,甚至包含系统退出类的信号异常。这种写法很容易掩盖代码中真正的报错原因,让程序的错误排查与调试工作变得十分困难。

4.默认参数使用可变对象

#坏习惯

def add_item(item,items=[]):

      items.append(item)

      return items

#好习惯

defadd_item(item,items=None):

      if items is None:

          items = []

      items.append(item)

      return items

理由:函数的默认参数值,是在函数定义阶段就完成计算的,而非每次调用函数时重新生成。这就意味着,若默认参数为列表、字典这类可变对象,该对象会在函数的所有调用过程中被共享使用,最终引发程序出现意料之外的运行结果。

5.不会使用推导式

#坏习惯

squares = []

for i in range(5):

     squares.append(i ** 2)

#好习惯

squares = [i ** 2 for i in range(5)]

理由:推导式是 Python 中简洁又实用的语法糖,不仅能精简代码行数,还能提升代码的可读性与编写执行效率。

6.使用type(x)检查类型

#坏习惯

value = 42

if type(value) is int:

   print("It's an integer")

#好习惯

value = 42

if isinstance(value,int):

    print("It's an integer")

理由:相较于 isinstance,type 的使用灵活性不足,而且它无法正确识别和处理类的继承关系。

7.使用 ==判断是否为 None,True 或 False

#坏习惯

if x == None:

    print("x is None")

#好习惯

if x is None:

    print("x is None")

理由:在 Python 里,None、True、False 均为单例对象,使用 is 关键字做判断,能精准比对对象的真实身份。此外,对象的 eq 方法支持被重载,这也意味着用 == 做比较时,结果未必能符合我们的预期。

8.使用bool(...)或len(...)进行条件检查

#坏习惯

my_list= [1,2,3]

if len(my_list) != 0:

   print("List is not empty")

#好习惯

my_list=[1,2,3]

if my_list:

      print("List is not empty")

理由:进行条件判断时,尽量选用可读性更强的表达式即可,无需刻意显式检查对象的长度或布尔真值。

9.使用 range(len(...)),而不是 enumerate

#坏习惯

my_list = ['apple', 'banana', 'orange']

for i in range(len(my_list)):

     item = my_list[i]

     print(i,item)

#好习惯

my_list = ['apple', 'banana','orange']

for i,item in enumerate(my_list):

     print(i,item)

理由:enumerate () 能实现迭代时同时获取索引与对应值,是更优雅的写法,远比手动定义变量追踪索引的方式更优。

10.不了解字典的items方法

#坏习惯

my_dict={'a':1,'b':2,'c':3}

for key in my_dict:

     print(key,my_dict[key])

#好习惯

my_dict={'a':1,'b':2,'c':3}

for key, value in my_dict.items():

     print(key,value)

理由:字典的 items () 方法,能更直接地在遍历中同时获取键与对应的值,还能避免额外的字典键值查找操作,更高效便捷。

11.不使用元组解包

#坏习惯

coordinates = (3,5)

x = coordinates[0]

y = coordinates[1]

#好习惯

coordinates = (3,5)

X, y = coordinates

理由:元组解包的写法能让代码变得更为简洁精炼,同时有效提升整体的可读性。

12.使用time()进行代码计时

#坏习惯

start_time = time.time()

# Some code to be timed

end_time = time.time()

#好习惯

start_time = time.perf_counter()

# Some code to be timed

end_time = time.perf_counter()

理由:perf_counter () 能提供更高精度的计时功能,非常适合用来测算小段代码的执行耗时;而 time () 方法的计时精度偏低,大概率不适用于短时间间隔的性能测试场景。

13.在生产环境使用print语句而不是日志

#坏习惯

result = calculate_result()

print("Result:",result)

#好习惯

import logging

result = calculate_result()

logging.info("Result:%s",result)

理由:print 语句虽能用于简单调试,但在生产环境中,使用日志模块会是更优选择,日志不仅功能完善,还支持丰富的配置项与多级别的日志管理。

14.使用import*导入模块

#坏习惯

from module import *

#好习惯

from module import specific_function_or_class

理由:一次性导入模块中的所有符号,很容易引发命名冲突的问题,同时也会让代码的后续维护难度大大增加。

15.不使用原始字符串

#坏习惯

regular_string = "C:\\Documents\\file.txt"

#好习惯

raw_string = r"C:\Documents\file.txt"

理由:使用原始字符串能有效提升代码可读性,尤其在处理文件路径、正则表达式这类包含大量反斜杠的场景中更具优势;原始字符串的特性,能明确告知阅读者,无需将其中的反斜杠解析为转义字符。

我还整理了一些Python入门学习资料,希望可以帮到有需要的人!

获取方式:

1点赞+再看

2关注公众号,厚台私信发送【资料】领取

最新文章

随机文章