目录
前言
一、函数的基本定义与调用
1. 函数定义
2. 函数调用
二、函数的参数
1. 位置参数(必选参数)
2. 关键字参数
3. 默认参数
4. 可变参数(*args)
5. 关键字可变参数(**kwargs)
三、函数的返回值
四、函数的文档字符串(Docstring)
五、函数的作用域
六、匿名函数(lambda)
七、高阶函数
八、函数的装饰器(Decorator)
总结
前言
函数是Python编程中组织代码的基本单元,将特定功能封装为可重复调用的模块。通过函数可以实现代码复用、逻辑抽象和问题分解,提升程序的可读性和可维护性。
一、函数的基本定义与调用
1. 函数定义
使用 def 关键字定义函数,基本语法:
def 函数名(参数列表):
"""函数文档字符串(可选)"""
函数体(执行的代码)
return 返回值(可选)
示例:
def greet(name):
"""向指定名称的人打招呼"""
return f"Hello, {name}!"
2. 函数调用
通过函数名加括号调用函数:
message = greet("Alice")
print(message) # 输出: Hello, Alice!
二、函数的参数
Python 函数的参数类型丰富,主要包括以下几种:
1. 位置参数(必选参数)
必须按照顺序传递的参数,数量和位置需与定义一致:
def add(a, b):
return a + b
print(add(3, 5)) # 输出: 8(3传给a,5传给b)
2. 关键字参数
调用时指定参数名,可忽略顺序:
print(add(b=5, a=3)) # 输出: 8(明确指定a=3, b=5)
3. 默认参数
定义时指定默认值,调用时可省略:
def greet(name, prefix="Hello"):
return f"{prefix}, {name}!"
print(greet("Bob")) # 输出: Hello, Bob!(使用默认prefix)
print(greet("Bob", "Hi")) # 输出: Hi, Bob!(覆盖默认值)
注意:默认参数必须放在位置参数之后。
4. 可变参数(*args)
接收任意数量的位置参数,以元组形式存储:
def sum_numbers(*args):
return sum(args)
print(sum_numbers(1, 2, 3)) # 输出: 6
print(sum_numbers(10, 20, 30, 40)) # 输出: 100
5. 关键字可变参数(**kwargs)
接收任意数量的关键字参数,以字典形式存储:
def print_info(** kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30, city="New York")
# 输出:
# name: Alice
# age: 30
# city: New York
三、函数的返回值
- 函数通过 return 语句返回结果,执行到 return 后函数立即结束。
- 若没有 return 或 return 后无值,默认返回 None。
- 可返回多个值,实际以元组形式返回: def get_name_and_age():
return "Alice", 30 # 等价于 return ("Alice", 30)name, age = get_name_and_age() # 自动解包
print(name, age) # 输出: Alice 30
四、函数的文档字符串(Docstring)
用于解释函数功能,可通过 help() 函数或 .__doc__ 属性查看:
def area(radius):
"""计算圆的面积
参数:
radius: 圆的半径
返回:
圆的面积(π×r²)
"""
import math
return math.pi * radius **2
print(area.__doc__) # 打印文档字符串
help(area) # 更友好的格式显示帮助
五、函数的作用域
变量的作用域分为: 1.** 局部变量 :函数内部定义,仅在函数内有效。 2. 全局变量 **:函数外部定义,整个模块有效。若需在函数内修改全局变量,需用 global 声明:
count = 0 # 全局变量
def increment():
global count # 声明使用全局变量
count += 1
increment()
print(count) # 输出: 1
3.** 非局部变量(nonlocal)**:用于嵌套函数中,修改外层函数的变量:
def outer():
x = 10
def inner():
nonlocal x # 声明使用外层函数的x
x += 5
inner()
return x
print(outer()) # 输出: 15
六、匿名函数(lambda)
用 lambda 关键字定义的简短匿名函数,语法:lambda 参数: 表达式
add = lambda a, b: a + b
print(add(3, 5)) # 输出: 8
# 常用于高阶函数(如sorted、map等)
numbers = [(2, 5), (1, 3), (4, 1)]
sorted_numbers = sorted(numbers, key=lambda x: x[1]) # 按元组第二个元素排序
print(sorted_numbers) # 输出: [(4, 1), (1, 3), (2, 5)]
七、高阶函数
接受函数作为参数或返回函数的函数:
# 接受函数作为参数
def apply_func(func, x, y):
return func(x, y)
print(apply_func(add, 3, 5)) # 输出: 8(add是之前定义的函数)
# 返回函数
def make_multiplier(n):
def multiplier(x):
return x * n
return multiplier
double = make_multiplier(2)
print(double(5)) # 输出: 10
八、函数的装饰器(Decorator)
用于在不修改函数代码的前提下扩展函数功能,本质是高阶函数:
def log_decorator(func):
def wrapper(*args, **kwargs):
print(f"调用函数: {func.__name__}")
result = func(*args, **kwargs)
print(f"函数返回: {result}")
return result
return wrapper
@log_decorator # 等价于 greet = log_decorator(greet)
def greet(name):
return f"Hello, {name}!"
greet("Alice")
# 输出:
# 调用函数: greet
# 函数返回: Hello, Alice!
总结
函数是 Python 编程的基础,掌握其定义、参数、返回值、作用域及高级特性(如装饰器、高阶函数),能显著提升代码质量和开发效率。合理使用函数可以使程序结构更清晰,便于维护和扩展。
评论前必须登录!
注册