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

内容分享11个月前发布
10 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 条评论

  • 头像
    陈金海 读者

    收藏了,感谢分享

    无记录
    回复