5.7 内置函数详解¶
Python提供了许多内置函数,这些函数可以直接在代码中使用,无需额外导入。本节将详细介绍一些常用的内置函数。
数学函数¶
Python提供了多种数学计算相关的内置函数:
# 数学函数示例
numbers = [-5, -2.7, 0, 3.14, 8]
print("数学函数示例:")
print(f"abs(-5) = {abs(-5)}") # 绝对值
print(f"round(3.14159, 2) = {round(3.14159, 2)}") # 四舍五入(保留2位小数)
print(f"pow(2, 3) = {pow(2, 3)}") # 幂运算(2的3次方)
print(f"min(numbers) = {min(numbers)}") # 最小值
print(f"max(numbers) = {max(numbers)}") # 最大值
print(f"sum(numbers) = {sum(numbers)}") # 求和
输出结果:
数学函数示例:
abs(-5) = 5
round(3.14159, 2) = 3.14
pow(2, 3) = 8
min(numbers) = -5
max(numbers) = 8
sum(numbers) = 3.44
类型转换函数¶
用于在不同数据类型之间进行转换:
# 类型转换函数
print("类型转换示例:")
print(f"int('123') = {int('123')}") # 字符串转整数
print(f"float('3.14') = {float('3.14')}") # 字符串转浮点数
print(f"str(42) = '{str(42)}'") # 整数转字符串
print(f"bool(1) = {bool(1)}") # 整数转布尔值(非0为True)
print(f"bool(0) = {bool(0)}") # 整数0转布尔值(False)
# 集合/列表/元组转换
original_list = [1, 2, 2, 3, 3, 3]
print(f"\n原列表: {original_list}")
print(f"转为集合: {set(original_list)}") # 去重
print(f"转为元组: {tuple(original_list)}") # 不可变序列
print(f"转为字典: {dict(enumerate(original_list))}") # 索引+值
输出结果:
类型转换示例:
int('123') = 123
float('3.14') = 3.14
str(42) = '42'
bool(1) = True
bool(0) = False
原列表: [1, 2, 2, 3, 3, 3]
转为集合: {1, 2, 3}
转为元组: (1, 2, 2, 3, 3, 3)
转为字典: {0: 1, 1: 2, 2: 2, 3: 3, 4: 3, 5: 3}
序列操作函数¶
用于处理列表、元组等序列类型:
# 序列操作函数
fruits = ["apple", "banana", "cherry"]
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
print("序列操作示例:")
print(f"len(fruits) = {len(fruits)}") # 序列长度
print(f"sorted(numbers) = {sorted(numbers)}") # 排序
print(f"list(reversed(fruits)) = {list(reversed(fruits))}") # 反转
# enumerate():为序列添加索引
print("\nenumerate()示例:")
for index, fruit in enumerate(fruits):
print(f" 索引{index}: {fruit}")
# zip():将多个序列对应元素打包成元组
colors = ["red", "yellow", "dark red"]
print("\nzip()示例:")
for fruit, color in zip(fruits, colors):
print(f" {fruit}是{color}色的")
输出结果:
序列操作示例:
len(fruits) = 3
sorted(numbers) = [1, 1, 2, 3, 4, 5, 6, 9]
list(reversed(fruits)) = ['cherry', 'banana', 'apple']
enumerate()示例:
索引0: apple
索引1: banana
索引2: cherry
zip()示例:
apple是red色的
banana是yellow色的
cherry是dark red色的
高阶函数¶
如 reduce()、map()、filter() 等用于处理其他函数的函数:
from functools import reduce
# reduce():累积计算(需导入functools)
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers) # 计算乘积
print(f"所有数字的乘积: {product}") # 输出:120
# map():对序列元素应用函数
squares = list(map(lambda x: x**2, numbers)) # 计算平方
print(f"平方结果: {squares}") # 输出:[1, 4, 9, 16, 25]
# filter():过滤序列元素
evens = list(filter(lambda x: x % 2 == 0, numbers)) # 筛选偶数
print(f"偶数列表: {evens}") # 输出:[2, 4]
其他常用内置函数¶
any()/all():检查序列中元素的逻辑值isinstance():判断对象类型hasattr():检查对象是否有属性
# any()/all()
list1 = [True, True, True]
list2 = [True, False, True]
print(f"any(list1) = {any(list1)}") # True
print(f"all(list2) = {all(list2)}") # False
# isinstance()
value = 42
print(f"isinstance(42, int) = {isinstance(value, int)}") # True
# hasattr()
class Person:
def __init__(self, name):
self.name = name
person = Person("Alice")
print(f"hasattr(person, 'name') = {hasattr(person, 'name')}") # True
本章小结¶
本章覆盖了Python函数的核心知识点:
1. 函数定义与调用:通过 def 定义,文档字符串说明功能。
2. 参数传递:位置参数、关键字参数、默认参数、可变参数(*args/**kwargs)。
3. 返回值与作用域:函数返回多个值,变量作用域(局部/全局)。
4. 递归函数:通过调用自身解决问题,需注意终止条件。
5. lambda表达式:简洁定义匿名函数,适用于简单逻辑。
6. 内置函数:如 sum()、map()、reduce() 等,提高代码效率。
函数是Python编程的核心工具,掌握函数的灵活使用能显著提升代码的可读性和复用性。
练习题:
1. 编写一个函数,接收两个整数参数,返回它们的最大公约数(GCD)。
2. 使用 lambda 和 filter() 筛选出列表中所有能被3整除的偶数。
3. 实现一个递归函数,计算斐波那契数列的第n项。