python中用于函数和返回值得关键字

内容分享3天前发布
0 1 0

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语句时返回

重大提示

  1. 函数可以没有 return 语句,此时返回 None。
  2. return 可以出目前函数的任何地方,一旦执行,函数立即结束。
  3. lambda 函数一般用于简单的操作,复杂的逻辑还是应该用 def 定义正式函数。
  4. 合理使用 global 和 nonlocal,过度使用会使代码难以维护。
© 版权声明

相关文章

1 条评论

  • 头像
    陈金海 读者

    收藏了,感谢分享

    无记录
    回复