当前位置:首页>python>代码写得好不好,看这3个Python内置函数会不会用

代码写得好不好,看这3个Python内置函数会不会用

  • 2026-09-02 17:02:52
代码写得好不好,看这3个Python内置函数会不会用

代码写得好不好,看这3个Python内置函数会不会用

我当老师这些年,看过太多学生写的Python代码。有的人写了三年,代码还是像一团乱麻。有的人刚学半年,写出来的东西就让人看着舒服。差距在哪?不是语法不会,是有些内置函数没用对。

第一,enumerate。很多人写循环的时候,喜欢这样写:

i = 0
for item in list:
    print(i, item)
    i += 1

这不是错,但啰嗦。你手动维护了一个计数器i,万一忘记加1了,或者循环里有continue跳过了,i就对不上了。一个简单的enumerate就能解决:

for i, item in enumerate(list):
    print(i, item)

代码少了两行,逻辑更清楚。我有个学生以前老抱怨代码调试半天找不到bug,后来我让他把所有手动计数的循环都改成enumerate,问题少了一半。

第二,zip。很多人处理多个列表的时候,会这样写:

names = ['张三', '李四', '王五']
scores = [90, 85, 88]
for i in range(len(names)):
    print(names[i], scores[i])

用下标访问数组,看着就累。你仔细想想,这里真正想干的事是什么?是把两个列表里对应位置的元素配对。Python已经给了你现成的工具:

for name, score in zip(names, scores):
    print(name, score)

代码少了,可读性高了。而且zip能处理任意多个列表,比手动下标灵活得多。更妙的是,如果两个列表长度不一样,zip会自动在最短的那个结束时停止,不会抛出索引越界的异常。

第三,any 和 all。这两个函数很多人不知道,写判断的时候写出一长串逻辑:

def has_even(numbers):
    for num in numbers:
        if num % 2 == 0:
            return True
    return False

这个没错,但可以更直接。用any一句话就完了:

def has_even(numbers):
    return any(num % 2 == 0 for num in numbers)

同理,检查所有元素是否都大于0,用all:

def all_positive(numbers):
    return all(num > 0 for num in numbers)

代码是给人读的,不是给机器读的。你写代码的时候,脑子里想的应该是“我要表达什么逻辑”,而不是“我该用哪个变量来暂存这个中间结果”。这三个函数能帮你说出你想说的话,而不是写出机器能听懂但人看不懂的指令。

我见过太多人,写代码像在写流水账。明明可以用一个函数说清楚的事,偏要写个循环加个判断。你省的不是代码量,是读你代码的人的时间。那个读你代码的人,很可能就是你自己,下周的你。

最新文章

随机文章