函数是组织代码的基本单元,它可以将一组操作封装在一起,使代码更模块化、可重用和易于维护。Python 提供了灵活的函数定义和调用机制。
1. 定义函数
函数的定义使用 def
关键字,后跟函数名、参数列表和函数体。函数体必须缩进。
基本语法
def function_name(parameters):
"""文档字符串,可选"""
# 函数体
return expression
function_name
:函数名,用于标识函数。parameters
:函数的参数列表,可选。"""文档字符串"""
:描述函数用途的文档字符串,可选。return
:返回值,可选。
示例
def greet(name):
"""打印问候语"""
print(f"Hello, {name}!")
2. 调用函数
定义函数后,可以通过调用函数来执行其代码。调用函数时,传递的实参会赋值给形参。
示例
# 调用函数
greet("Alice") # 输出: Hello, Alice!
3. 参数传递
Python 的函数支持多种参数传递方式,包括位置参数、关键字参数、默认参数和不定长参数。
位置参数
参数按位置传递,按定义顺序赋值。
def add(a, b):
return a + b
print(add(2, 3)) # 输出: 5
关键字参数
参数按名称传递,赋值给指定的形参。
def add(a, b):
return a + b
print(add(a=2, b=3)) # 输出: 5
print(add(b=3, a=2)) # 输出: 5
默认参数
参数可以有默认值,调用时可以省略这些参数。
def greet(name, message="Hello"):
print(f"{message}, {name}!")
greet("Alice") # 输出: Hello, Alice!
greet("Bob", "Hi") # 输出: Hi, Bob!
不定长参数
使用 *args
和 **kwargs
接受任意数量的位置参数和关键字参数。
def print_args(*args):
for arg in args:
print(arg)
print_args(1, 2, 3) # 输出: 1 2 3
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_kwargs(name="Alice", age=25) # 输出: name: Alice age: 25
4. 函数的返回值
函数可以返回一个值,也可以返回多个值。使用 return
语句返回值。
返回单个值
def add(a, b):
return a + b
result = add(2, 3)
print(result) # 输出: 5
返回多个值
def get_name_and_age():
name = "Alice"
age = 25
return name, age
name, age = get_name_and_age()
print(name, age) # 输出: Alice 25
5. 可运行的Python案例
下面是一个完整的Python程序,演示了定义和调用函数、参数传递和返回值的使用。
# 定义函数
def greet(name, message="Hello"):
"""打印问候语"""
print(f"{message}, {name}!")
def add(a, b):
"""返回两个数的和"""
return a + b
def print_args(*args):
"""打印所有位置参数"""
for arg in args:
print(arg)
def print_kwargs(**kwargs):
"""打印所有关键字参数"""
for key, value in kwargs.items():
print(f"{key}: {value}")
def get_name_and_age():
"""返回名字和年龄"""
name = "Alice"
age = 25
return name, age
# 调用函数
greet("Alice") # 输出: Hello, Alice!
greet("Bob", "Hi") # 输出: Hi, Bob!
result = add(2, 3)
print(f"2 + 3 = {result}") # 输出: 2 + 3 = 5
print("位置参数:")
print_args(1, 2, 3) # 输出: 1 2 3
print("关键字参数:")
print_kwargs(name="Alice", age=25) # 输出: name: Alice age: 25
name, age = get_name_and_age()
print(f"Name: {name}, Age: {age}") # 输出: Name: Alice, Age: 25
可以将上面的代码复制到你的IDE中运行,观察程序的输出。这个案例综合了函数定义和调用、参数传递和返回值的基本知识,帮助你理解和掌握这些操作。继续加油,学习Python会越来越有趣和有用!