12个实用的Python内置函数,让你的代码更简洁高效

摘要:Python提供了很多强大的内置函数,能够帮我们节省时间、简化代码并提升程序性能。很多初学者并不知道这些函数的存在,经常自己重复实现Python已经提供的功能。

Python提供了很多强大的内置函数,能够帮我们节省时间、简化代码并提升程序性能。很多初学者并不知道这些函数的存在,经常自己重复实现Python已经提供的功能。

下面是我在编程过程中发现的12个最有用的Python内置函数,希望早点知道它们就好了。


1. enumerate() - 轻松获取索引和值

遍历列表时,不再需要手动维护计数器变量来获取索引:

cities = ['巴黎', '东京', '开罗', '悉尼']
for 序号, 城市 in enumerate(cities, start=1):
    print(序号, 城市)

输出结果:

1 巴黎
2 东京
3 开罗
4 悉尼

这样就不需要自己定义索引变量了,代码更加清晰。


2. zip() - 同时遍历多个列表

需要同时处理多个列表时,zip()非常有用:

书籍 = ['1984', '沙丘', '哈姆雷特']
作者 = ['乔治·奥威尔', '弗兰克·赫伯特', '威廉·莎士比亚']

for 书, 作者名 in zip(书籍, 作者):
    print(f"《{书}》的作者是{作者名}")

输出结果:

《1984》的作者是乔治·奥威尔
《沙丘》的作者是弗兰克·赫伯特
《哈姆雷特》的作者是威廉·莎士比亚


3. any()和all() - 快速检查条件

any()在可迭代对象中至少有一个True时返回True,all()需要所有元素都为True才返回True:

词语列表 = ["你好", "世界", ""]
print(any(词语列表))  # True(至少有一个非空字符串)
print(all(词语列表))  # False(因为有空字符串)

这比写循环来检查条件要简洁得多。


4. sorted() - 灵活排序数据

不需要写复杂的排序逻辑,sorted()可以轻松实现各种排序需求:

商品列表 = [('笔记本电脑', 1200), ('手机', 800), ('平板', 600)]
按价格排序 = sorted(商品列表, key=lambda x: x[1])
print(按价格排序)

输出结果:

[('平板', 600), ('手机', 800), ('笔记本电脑', 1200)]

key参数让你可以指定按哪个字段排序。


5. map() - 批量处理数据

不需要用for循环来转换每个元素,map()可以一次性处理所有元素:

数字列表 = [1, 2, 3, 4, 5, 6]
偶数加倍 = list(map(lambda x: x * 2 if x % 2 == 0 else x, 数字列表))
print(偶数加倍)

输出结果:

[1, 4, 3, 8, 5, 12]

如果条件比较复杂,也可以用列表推导式:

数字列表 = [1, 2, 3, 4, 5, 6]
奇数立方 = [x ** 3 for x in 数字列表 if x % 2 != 0]
print(奇数立方)  # 输出:[1, 27, 125]


6. filter() - 筛选满足条件的元素

filter()可以快速筛选出符合条件的元素:

单词列表 = ["apple", "banana", "orange", "grape", "umbrella"]
元音开头 = list(filter(lambda w: w[0].lower() in "aeiou", 单词列表))
print(元音开头)

输出结果:

['apple', 'orange', 'umbrella']


7. reduce() - 累积计算

reduce()函数(需要从functools导入)可以进行累积操作,比如找最大值、求和等:

from functools import reduce
编程语言 = ["python", "java", "javascript", "c"]
最长单词 = reduce(lambda a, b: a if len(a) > len(b) else b, 编程语言)
print(最长单词)

输出结果:

javascript

虽然sum()函数在求和时更直观,但reduce()在自定义累积操作时更强大。


8. setdefault() - 安全的字典操作

不需要先用if检查键是否存在,setdefault()可以自动初始化不存在的键:

库存 = {'苹果': 10}
香蕉数量 = 库存.setdefault('香蕉', 5)  # 如果香蕉不存在就添加
print(库存)

输出结果:

{'苹果': 10, '香蕉': 5}


9. vars() - 查看对象属性

vars()返回对象的__dict__属性,方便查看对象的所有属性:

class 汽车:
    def __init__(self, 品牌, 年份):
        self.品牌 = 品牌
        self.年份 = 年份

我的车 = 汽车('丰田', 2020)
print(vars(我的车))

输出结果:

{'品牌': '丰田', '年份': 2020}


10. globals()和locals() - 查看变量作用域

想了解当前作用域有哪些变量时,这两个函数很有用:

全局变量 = 5

def 测试函数():
    局部变量 = 15
    print("函数内的局部变量:", locals())
    print("函数内的全局变量:", list(globals().keys())[:5])  # 显示前5个

测试函数()


11. isinstance() - 类型检查

与使用type()相比,isinstance()进行类型检查更加灵活:

数据1 = "你好"
数据2 = [1, 2, 3]

print(isinstance(数据1, str))              # True
print(isinstance(数据2, (list, tuple)))    # True(数据2是列表)
print(isinstance(数据1, (list, tuple)))    # False


12. callable() - 判断是否可调用

想知道一个对象能否像函数一样被调用?用callable():

class 倍数器:
    def __init__(self, 倍数):
        self.倍数 = 倍数
        
    def __call__(self, 数字):
        return 数字 * self.倍数

加倍 = 倍数器(2)
print(callable(加倍))     # True,因为有__call__方法
print(callable("字符串")) # False,字符串不可调用

当处理动态创建的对象时,这个函数特别有用。


使用建议

开始使用这些内置函数后,你会发现代码变得:

  • 更简洁:用一行代码代替多行循环

  • 更易读:函数名直接表达了代码的意图

  • 更高效:内置函数通常比手写代码运行更快

建议先从enumerate()、zip()、sorted()这几个最常用的函数开始,逐步在其他代码中尝试使用这些内置函数。你会发现Python编程变得更有趣,代码质量也明显提升。

记住,好的程序员不是知道所有答案,而是知道在哪里找到答案。这些内置函数就是Python为你准备好的高效工具。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_13122