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. 使用 lambdafilter() 筛选出列表中所有能被3整除的偶数。
3. 实现一个递归函数,计算斐波那契数列的第n项。

Xiaoye