导语
"函数是Python的构建模块,掌握它们就像获得了编程超能力!"
一、为什么需要函数?
-
避免重复代码(DRY原则)
-
提高代码可读性
-
便于调试和维护
二、函数的基本概念
函数是一段具有特定功能的、可重用的代码块。在Python中,使用def关键字来定义函数。
2.1 函数的定义语法
def 函数名(参数1, 参数2, ...):
"""函数文档字符串"""
函数体
return 返回值
2.2 函数的组成部分
-
函数名:函数的标识符,遵循Python变量命名规则
-
参数:函数接收的输入值,可以有多个或没有
-
文档字符串:对函数功能的说明(可选但推荐)
-
函数体:实现函数功能的代码块
-
return语句:返回函数结果(可选)
三、函数的定义与调用
3.1 定义无参函数
def greet():
"""打印问候语"""
print("Hello, World!")
# 调用函数
greet() # 输出: Hello, World!
3.2 定义带参函数
def greet(name):
"""打印个性化问候语"""
print(f"Hello, {name}!")
# 调用函数
greet("Alice") # 输出: Hello, Alice!
3.3 定义带返回值的函数
def add(a, b):
"""返回两个数的和"""
return a + b
# 调用函数并获取返回值
result = add(3, 5)
print(result) # 输出: 8
四、函数的参数类型
Python函数支持多种参数传递方式:
4.1 位置参数
def power(base, exponent):
"""计算base的exponent次方"""
return base ** exponent
print(power(2, 3)) # 8
4.2 默认参数
def power(base, exponent=2):
"""计算base的exponent次方,默认平方"""
return base ** exponent
print(power(3)) # 9 (使用默认参数)
print(power(3, 3)) # 27
4.3 关键字参数
def describe_pet(pet_name, animal_type='dog'):
"""显示宠物信息"""
print(f"I have a {animal_type} named {pet_name}.")
describe_pet(pet_name='Whisky') # 使用关键字参数
describe_pet(animal_type='hamster', pet_name='Harry')
4.4 可变参数
# *args接收任意数量的位置参数
def sum_numbers(*args):
"""计算任意数量数字的和"""
total = 0
for num in args:
total += num
return total
print(sum_numbers(1, 2, 3)) # 6
print(sum_numbers(1, 2, 3, 4, 5)) # 15
# **kwargs接收任意数量的关键字参数
def build_profile(**kwargs):
"""构建用户资料"""
profile = {}
for key, value in kwargs.items():
profile[key] = value
return profile
user = build_profile(name='Alice', age=25, occupation='Engineer')
print(user) # {'name': 'Alice', 'age': 25, 'occupation': 'Engineer'}
五、函数的返回值
5.1 返回单个值
def square(number):
"""返回数字的平方"""
return number * number
result = square(4)
print(result) # 16
5.2 返回多个值
def get_circle_info(radius):
"""返回圆的面积和周长"""
area = 3.14 * radius * radius
circumference = 2 * 3.14 * radius
return area, circumference
a, c = get_circle_info(5)
print(f"面积: {a}, 周长: {c}") # 面积: 78.5, 周长: 31.400000000000002
5.3 无返回值函数
def print_hello(name):
"""打印问候语,无返回值"""
print(f"Hello, {name}!")
result = print_hello("Bob") # Hello, Bob!
print(result) # None
六、变量的作用域
6.1 局部变量
def test_local():
x = 10 # 局部变量
print("函数内:", x)
test_local()
# print(x) # 报错,x未定义
6.2 全局变量
x = 20 # 全局变量
def test_global():
global x # 声明使用全局变量
x = 30
print("函数内:", x)
test_global()
print("函数外:", x) # 函数外: 30
七、Lambda函数
Lambda函数是一种匿名函数,用于简单的操作:
# 普通函数
def square(x):
return x * x
# Lambda等价形式
square_lambda = lambda x: x * x
print(square(5)) # 25
print(square_lambda(5)) # 25
# 在列表排序中使用
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs) # [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
八、递归函数
递归函数是调用自身的函数:
def factorial(n):
"""计算阶乘的递归函数"""
if n == 1:
return 1
else:
return n * factorial(n-1)
print(factorial(5)) # 120
九、函数的高级用法
9.1 函数作为参数
def apply_operation(func, x, y):
"""应用传入的函数到x和y"""
return func(x, y)
def add(a, b):
return a + b
def multiply(a, b):
return a * b
print(apply_operation(add, 3, 4)) # 7
print(apply_operation(multiply, 3, 4)) # 12
9.2 闭包
def make_multiplier(factor):
"""创建闭包函数"""
def multiplier(x):
return x * factor
return multiplier
times3 = make_multiplier(3)
times5 = make_multiplier(5)
print(times3(9)) # 27
print(times5(3)) # 15
9.3 装饰器
def my_decorator(func):
"""装饰器函数"""
def wrapper():
print("函数执行前...")
func()
print("函数执行后...")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
# 输出:
# 函数执行前...
# Hello!
# 函数执行后...
十、总结
Python函数是代码组织和重用的基本单元,掌握函数的定义与使用是Python编程的基础。本文介绍了:
-
函数的基本定义语法
-
各种参数传递方式
-
返回值的使用
-
变量作用域规则
-
Lambda表达式
-
递归函数
-
函数的高级用法(函数作为参数、闭包、装饰器等)
通过灵活运用这些函数特性,可以写出更加模块化、可重用和易维护的Python代码。
456

被折叠的 条评论
为什么被折叠?



