Python自学手册
在Python学习与开发过程中,几乎所有初学者都会面临一个共同困惑:Python内置函数数量繁多,标准库与第三方库更是不计其数,如何高效掌握、合理运用,而非盲目记忆?事实上,无需死记硬背所有内置函数,核心在于对知识进行分级,明确“必学、了解、暂不关注”的优先级,才能最大化学习效率。
本文将基于“知识分级”思路,全面解析Python 71个内置函数(注:严格来说仅44个为真正意义上的函数,其余27个为类,但下文统一以“函数”代称),按“常用已知、新手易忽略、后续学习、可选学习、无需关注”五大类别分类,结合具体代码示例,帮助开发者快速掌握核心用法,避开学习误区。
一、知识分级核心逻辑
对于Python内置函数,建议按以下三级原则规划学习,避免精力浪费:
1.必须熟练记忆并掌握:日常开发高频使用,是Python编程的基础能力;
2.了解即可,需能快速查阅:有用但使用频率不高,知晓其功能,需用时能快速定位用法;
3.暂不关注:专业性极强,仅用于特定场景,日常开发几乎用不到,无需提前学习。
基于此原则,我们将71个内置函数分为五大类别,重点聚焦前两类核心函数,其余类别按需学习即可。
二、常用已知内置函数(10个)
这类函数是Python编程的基础,无论初学者还是资深开发者,日常使用频率极高,属于必须熟练掌握的范畴,多数开发者在入门阶段即可接触到。
1. print():输出函数
基础功能为打印输出,支持多参数、分隔符(sep)、结束符(end)等关键字参数,灵活控制输出格式:
pythonwords = ["Welcome", "to", "Python"]print(words) # 输出: ['Welcome', 'to', 'Python']print(*words, sep="\n", end="!") # 按换行分隔,以!结束# 输出:# Welcome# to# Python! |
2. len():长度计算函数
用于获取可迭代对象(字符串、列表、元组等)的长度,Python中统一使用len(obj)语法,而非对象的方法(如obj.length()):
pythonmy_list = [2, 1, 3, 5, 8]print(len(my_list)) # 输出: 5my_str = "Python"print(len(my_str)) # 输出: 6 |
3. 类型转换函数:str()、int()、float()
用于不同数据类型之间的转换,需注意Python不支持自动类型 coercion(强制转换),需手动调用函数:
python# str():转换为字符串version = 3print("Python " + str(version)) # 输出: Python 3# int():转换为整数,可截断浮点数from math import sqrtprint(int(sqrt(28))) # 输出: 5(截断小数部分)# float():转换为浮点数pi = "3.14159"print(float(pi)) # 输出: 3.14159 |
4. 容器构造函数:list()、tuple()、dict()、set()
用于构造对应类型的容器对象,支持从可迭代对象转换,需注意空容器的推荐构造方式:
python# list():构造列表,推荐用[]创建空列表gen = (n**2 for n in [2,1,3])print(list(gen)) # 输出: [4, 1, 9]empty_list = [] # 推荐,优于list()# tuple():构造元组,用于需要哈希able的场景(如字典键)print(tuple([2,1,3])) # 输出: (2, 1, 3)# dict():构造字典,支持键值对迭代器或关键字参数color_counts = [('red', 2), ('green', 1)]print(dict(color_counts)) # 输出: {'red': 2, 'green': 1}empty_dict = {} # 推荐,优于dict()# set():构造集合,去重功能常用,空集合只能用set()numbers = [1,1,2,3]print(set(numbers)) # 输出: {1, 2, 3}empty_set = set() # 唯一方式,{}为字典 |
5. range():范围生成函数
生成range对象(惰性迭代器),用于循环生成连续数字,支持start、stop、step三个参数,左闭右开区间:
python# 生成0-9的数字(不包含10)for n in range(10):print(n, end=" ") # 输出: 0 1 2 3 4 5 6 7 8 9# 生成10-50,步长为10for n in range(10, 51, 10):print(n) # 输出: 10 20 30 40 50 |
注意:Python 3中range()返回惰性迭代器,不占用大量内存,优于Python 2中的range(返回列表)。
三、新手易忽略的内置函数(15个)
这类函数实用性极强,但新手容易忽略,掌握后能大幅提升编码效率,尤其是10个常用函数+5个调试函数,建议重点了解并运用。
(一)常用易忽略函数(10个)
1. bool():真值判断函数
用于判断对象的真值性,Python中“0、空容器、None”均为False,其余为True,日常编码中可替代len(obj) == 0的判断方式:
python# 真值判断示例print(bool(0)) # 输出: Falseprint(bool([])) # 输出: Falseprint(bool("hello")) # 输出: True# 简化判断(推荐)numbers = []if not numbers: # 等价于if len(numbers) == 0print("列表为空") |
2. enumerate():索引迭代函数
用于循环时同时获取索引和元素,替代range(len(obj))的繁琐写法,支持start参数指定起始索引:
pythonwords = ["Python", "is", "lovely"]# 起始索引从1开始for idx, word in enumerate(words, start=1):print(f"第{idx}个词:{word}")# 输出:# 第1个词:Python# 第2个词:is# 第3个词:lovely |
3. zip():多可迭代对象并行迭代
用于同时循环多个可迭代对象,返回迭代器,长度与最短的可迭代对象一致;需处理不同长度时,可使用itertools.zip_longest:
pythonnums = [2,1,3,4]letters = ['P','y','t','h']for num, letter in zip(nums, letters):print(letter, num)# 输出:# P 2# y 1# t 3# h 4 |
4. reversed():反向迭代函数
返回可迭代对象的反向迭代器,不修改原对象,优于列表切片[::-1](不生成新列表,更高效):
pythonnums = [2,1,3,4,7]# 反向迭代,不修改原列表for num in reversed(nums):print(num, end=" ") # 输出: 7 4 3 1 2# 对比切片(生成新列表)print(nums[::-1]) # 输出: [7,4,3,1,2] |
5. sum()、min()、max():聚合函数
sum()用于计算可迭代对象中数字的和,min()/max()用于获取最小值/最大值,支持key参数自定义排序规则:
pythonnums = [2,1,3,4,7]print(sum(nums)) # 输出: 17print(min(nums)) # 输出: 1print(max(nums)) # 输出: 7# 自定义key(如获取字符串长度最大的元素)words = ["Python", "is", "lovely"]print(max(words, key=len)) # 输出: lovely |
6. sorted():排序函数
对可迭代对象进行排序,返回新列表(不修改原对象),支持reverse参数(反向排序)和key参数(自定义排序):
pythonnums = [1,8,2,13,5]# 正向排序print(sorted(nums)) # 输出: [1,2,5,8,13]# 反向排序print(sorted(nums, reverse=True)) # 输出: [13,8,5,2,1]# 按字符串长度排序words = ["Python", "is", "lovely"]print(sorted(words, key=len)) # 输出: ['is', 'Python', 'lovely'] |
7. any()、all():条件判断函数
any():只要有一个元素满足条件,返回True;all():所有元素满足条件,返回True,常与生成器表达式配合使用:
python# 判断列表中是否有偶数nums = [1,3,5,4]print(any(n % 2 == 0 for n in nums)) # 输出: True# 判断列表中所有元素都是偶数print(all(n % 2 == 0 for n in nums)) # 输出: False |
(二)调试专用函数(5个)
这类函数专门用于代码调试,能快速定位问题,提升调试效率,建议熟练掌握。
1. breakpoint():调试断点函数
Python 3.7+新增,调用后进入pdb调试模式,替代旧版的import pdb; pdb.set_trace():
pythondef add(a, b):breakpoint() # 执行到此处暂停,进入调试模式return a + badd(2, 3) |
2. dir():属性查看函数
无参数时,查看当前局部变量;有参数时,查看对象的所有属性(包括方法):
pythonx = [1,2,3]# 查看列表x的所有属性和方法print(dir(x)) # 输出包含append、pop、sort等方法 |
3. vars():属性字典函数
无参数时,等价于locals()(查看局部变量字典);有参数时,返回对象的__dict__属性(实例属性字典):
pythonclass Person:def __init__(self, name):self.name = namep = Person("Alice")print(vars(p)) # 输出: {'name': 'Alice'} |
4. type():类型查看函数
返回对象的类型,替代对象的__class__属性,调试时可快速确认变量类型:
pythonx = [1,2,3]print(type(x)) # 输出: <class 'list'>print(x.__class__) # 等价,但不推荐 |
5. help():帮助函数
在Python REPL或调试模式中,快速查看对象、方法的官方文档,无需切换到浏览器:
pythonhelp(list.append) # 查看list.append方法的用法 |
四、后续学习的内置函数(14个)
这类函数有一定实用性,但使用场景相对特定,无需提前熟练掌握,待实际开发需要时再深入学习即可。
•open():文件操作函数,用于读取/写入文件,可结合pathlib模块使用;
•input():获取用户输入,仅用于命令行程序,其他场景(如Web开发)很少用到;
•repr():获取对象的程序员可读表示,区别于str()的用户可读表示,常用于日志、异常处理;
•super():面向对象编程中,用于调用父类方法,继承场景必备;
•property():装饰器,用于创建属性,替代getter/setter方法,提升代码简洁性;
•issubclass()/isinstance():类型判断函数,issubclass判断类的继承关系,isinstance判断对象的类型;
•hasattr()/getattr()/setattr()/delattr():动态操作对象属性,用于元编程场景;
•classmethod/staticmethod:类装饰器,classmethod用于定义类方法(可通过类调用),staticmethod用于定义静态方法(无self/cls参数);
•next():手动获取迭代器的下一个元素,用于迭代器调试或自定义迭代逻辑。
五、可选学习的内置函数(15个)
这类函数专业性较强,仅用于特定场景,部分开发者可能终身用不到,按需学习即可:
•iter():获取可迭代对象的迭代器,底层支撑for循环;
•callable():判断对象是否可调用(如函数、类);
•filter()/map():函数式编程工具,推荐用生成器表达式替代;
•id()/locals()/globals():用于查看变量内存地址、局部/全局变量,多用于教学或调试;
•round():数字四舍五入,需用时可快速查阅;
•divmod():同时返回地板除法和取模结果,如divmod(7,3)返回(2,1);
•bin()/oct()/hex():将数字转换为二进制、八进制、十六进制字符串;
•abs():获取数字的绝对值;
•hash():获取对象的哈希值,用于字典、集合的底层实现;
•object():Python所有类的基类,可用于创建哨兵值。
六、几乎无需关注的内置函数(17个)
这类函数专业性极强,仅用于非常特殊的场景(如异步编程、字节操作、底层代码开发),日常开发几乎用不到,无需提前学习:
•ord()/chr():用于ASCII/Unicode码点与字符的转换;
•exec()/eval()/compile():用于执行字符串形式的代码,存在安全风险,慎用;
•slice():用于自定义序列的切片逻辑,仅在实现__getitem__方法时可能用到;
•bytes()/bytearray()/memoryview():用于字节数据操作;
•ascii():返回对象的ASCII-only表示,实用性极低;
•frozenset():不可变集合,用于需要哈希able集合的场景,使用频率极低;
•aiter()/anext():用于异步迭代器,仅在异步编程中用到;
•__import__():底层导入函数,推荐用importlib替代;
•format():调用对象的__format__方法,用于字符串格式化,无需手动调用;
•pow():幂运算,优先使用**运算符;
•complex():用于创建复数,仅在科学计算等场景用到。
七、总结与学习建议
Python 71个内置函数无需全部掌握,核心优先级为:常用已知函数(10个)> 新手易忽略函数(15个)> 后续学习函数(14个)> 可选学习函数(15个)> 无需关注函数(17个)。
对于开发者而言,前期重点掌握前25个核心函数(10+15),能满足80%以上的日常开发需求;后续随着开发场景的拓展,再逐步学习其他函数。记住:Python编程的核心是“灵活运用”,而非“死记硬背”,熟练使用帮助函数(help())和官方文档,才能高效解决问题。
最后,建议结合实际项目练习这些函数,将其融入日常编码,才能真正掌握其用法,提升编码效率。