page contents

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

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

attachments-2026-08-ErHzpnhG6a83b6fd02c8d.png代码写得好不好,看这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)

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

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

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

 

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2323 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 2323 文章
  3. 小柒 2228 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章