Python 中用于函数与返回值的关键字。
这些关键字用于定义函数、从函数返回结果以及创建匿名函数,是模块化编程的基础。
一、函数定义关键字
1.def- 定义函数
- 功能:用于定义一个函数,即创建
def 函数名(参数1, 参数2, ...):
"""函数文档字符串(可选)"""
# 函数体代码
return 返回值
示例:
# 定义一个简单的函数
def greet(name):
"""向指定的人问好"""
return f"Hello, {name}!"
# 调用函数
message = greet("Alice")
print(message) # 输出: Hello, Alice!
2.lambda- 匿名函数
- 功能:用于创建匿名函数(没有名字的小型函数)。
- 特点:只能包含一个表达式,自动返回表达式的结果。
- 用途:一般用于需要函数对象作为参数的场合,如 map(), filter(), sorted() 等。
- 语法:
lambda 参数: 表达式
示例:
# 普通函数定义
def square(x):
return x ** 2
# 等价的lambda表达式
square = lambda x: x ** 2
print(square(5)) # 输出: 25
# 直接在函数参数中使用
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(squared) # 输出: [1, 4, 9, 16, 25]
二、返回值关键字
3.return- 返回值
- 功能:用于从函数中返回一个值,并立即结束函数的执行。
- 特点:
- 可以返回任何类型的数据(数字、字符串、列表、字典、甚至其他函数)
- 可以返回多个值(实际上是以元组的形式返回)
- 如果没有 return 语句,函数默认返回 None
- 示例:
# 返回单个值
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 输出: 8
# 返回多个值(以元组形式)
def get_user_info():
name = "Alice"
age = 25
return name, age # 等价于 return (name, age)
user_name, user_age = get_user_info()
print(user_name, user_age) # 输出: Alice 25
# 提前返回
def check_age(age):
if age < 0:
return "年龄不能为负数" # 提前返回
if age < 18:
return "未成年"
return "成年" # 默认返回
print(check_age(20)) # 输出: 成年
4.None- 空返回值
- 功能:虽然不是一个关键字(它是 NoneType 的唯一值),但它是函数的默认返回值。
- 用途:表明函数没有返回任何有意义的值。
- 示例
def print_hello(name):
print(f"Hello, {name}!")
# 没有return语句,默认返回None
result = print_hello("Bob")
print(result) # 输出: Hello, Bob! 然后输出: None
def explicit_none():
"""明确返回None"""
print("执行一些操作...")
return None
三、辅助关键字
5.pass- 占位符
- 功能:空操作语句,在语法上需要语句但逻辑上不需要任何操作时使用。
- 用途:常用于函数、类的占位,避免语法错误。
- 示例:
# 先定义函数结构,稍后实现
def future_function():
pass # TODO: 后来实现这个功能
# 在条件分支中占位
def process_data(data):
if data is None:
pass # 暂时不处理None的情况
else:
print(f"处理数据: {data}")
6.global和nonlocal- 变量作用域
- 功能:用于在函数内部访问和修改外部作用域的变量。
- global:声明变量来自全局作用域。
- nonlocal:声明变量来自外层(非全局)函数作用域。
- 示例:
# global 示例
counter = 0
def increment():
global counter # 声明使用全局变量counter
counter += 1
increment()
print(counter) # 输出: 1
# nonlocal 示例
def outer():
x = "outer"
def inner():
nonlocal x # 声明使用外层函数的x
x = "inner" # 修改外层函数的变量
inner()
print(x) # 输出: inner
outer()
四、函数参数相关关键字
虽然这些不是关键字,但在函数定义中超级重大:
- 默认参数:def func(a, b=10)
- 关键字参数:调用时指定参数名 func(a=1, b=2)
- 可变参数:
- *args:接收任意数量的位置参数
- **kwargs:接收任意数量的关键字参数
- 示例:
def flexible_func(a, b=10, *args, **kwargs):
print(f"a={a}, b={b}")
print(f"其他位置参数: {args}")
print(f"其他关键字参数: {kwargs}")
return a + b + sum(args)
result = flexible_func(1, 2, 3, 4, 5, name="Alice", age=25)
# 输出: a=1, b=2
# 其他位置参数: (3, 4, 5)
# 其他关键字参数: {'name': 'Alice', 'age': 25}
综合示例
def calculate_stats(numbers):
"""计算数字列表的统计信息"""
if not numbers: # 检查列表是否为空
return None, None, None # 返回多个None
total = sum(numbers)
count = len(numbers)
average = total / count
# 使用lambda函数找出最大值
max_num = max(numbers, key=lambda x: x)
return total, average, max_num # 返回多个值
# 调用函数并解包返回值
data = [10, 20, 30, 40, 50]
sum_result, avg_result, max_result = calculate_stats(data)
print(f"总和: {sum_result}") # 输出: 总和: 150
print(f"平均值: {avg_result}") # 输出: 平均值: 30.0
print(f"最大值: {max_result}") # 输出: 最大值: 50
# 处理空列表的情况
empty_result = calculate_stats([])
print(empty_result) # 输出: (None, None, None)
总结表
|
关键字 |
功能描述 |
示例 |
|
def |
定义函数 |
def func(): |
|
return |
从函数返回值 |
return result |
|
lambda |
创建匿名函数 |
lambda x: x*2 |
|
pass |
空操作占位符 |
pass |
|
global |
声明全局变量 |
global var |
|
nonlocal |
声明外层函数变量 |
nonlocal var |
|
None |
函数的默认返回值 |
无return语句时返回 |
重大提示:
- 函数可以没有 return 语句,此时返回 None。
- return 可以出目前函数的任何地方,一旦执行,函数立即结束。
- lambda 函数一般用于简单的操作,复杂的逻辑还是应该用 def 定义正式函数。
- 合理使用 global 和 nonlocal,过度使用会使代码难以维护。
© 版权声明
文章版权归作者所有,未经允许请勿转载。



收藏了,感谢分享