Python 函数:定义、调用、参数、递归和 Lambda 函数详解


在 Python 中,函数是组织代码的基本单位。它们可以接收参数,执行一系列操作,并返回结果。以下是关于函数的定义、调用、参数、递归和 Lambda 函数的详细解释和示例。

1. 定义和调用函数

定义函数

使用 def 关键字定义函数,函数名后跟一对圆括号和一个冒号,函数体缩进。

def greet(name):
    print(f"Hello, {name}!")

调用函数

通过函数名和一对圆括号调用函数,可以传递参数。

greet("Alice")  # 输出: Hello, Alice!

2. 函数参数

函数参数包括位置参数、默认参数、可变参数和关键字参数。

位置参数

按顺序传递的参数。

def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 输出: 8

默认参数

在定义函数时为参数提供默认值。

def greet(name="Guest"):
    print(f"Hello, {name}!")

greet()        # 输出: Hello, Guest!
greet("Bob")   # 输出: Hello, Bob!

可变参数

使用 *args 接收任意数量的位置参数,使用 **kwargs 接收任意数量的关键字参数。

def print_numbers(*args):
    for number in args:
        print(number)

print_numbers(1, 2, 3, 4)

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=30, city="New York")

关键字参数

通过参数名传递参数。

def greet(first_name, last_name):
    print(f"Hello, {first_name} {last_name}!")

greet(last_name="Doe", first_name="John")

3. 递归函数

递归是指函数调用自身。递归函数需要一个终止条件以避免无限循环。

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

print(factorial(5))  # 输出: 120

4. Lambda 函数

Lambda 函数是一种简短的匿名函数,使用 lambda 关键字定义。Lambda 函数可以有多个参数,但只能有一个表达式。

# 定义一个 Lambda 函数
add = lambda x, y: x + y

# 调用 Lambda 函数
result = add(3, 5)
print(result)  # 输出: 8

# 在列表中使用 Lambda 函数
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)  # 输出: [1, 4, 9, 16, 25]

5. 函数的返回值

函数可以使用 return 语句返回值。如果没有 return 语句,函数默认返回 None

def square(x):
    return x * x

result = square(4)
print(result)  # 输出: 16

6. 函数的文档字符串

使用三重引号 """ 定义文档字符串,为函数添加描述。

def add(a, b):
    """
    返回两个数的和。

    参数:
    a -- 第一个数
    b -- 第二个数
    """
    return a + b

print(add.__doc__)

小结

  • 定义和调用函数:使用 def 关键字定义函数,通过函数名调用。
  • 函数参数:包括位置参数、默认参数、可变参数(*args**kwargs)和关键字参数。
  • 递归函数:函数调用自身,必须有终止条件。
  • Lambda 函数:简短的匿名函数,用于简单的操作。
  • 返回值:使用 return 语句返回值。
  • 文档字符串:使用三重引号为函数添加描述。

理解和掌握这些概念,可以帮助你在 Python 中编写高效、可维护的函数。


原文链接:codingdict.net