3.2 python 基础 - 函数

32 阅读4分钟

什么是Python的函数?

Python的函数是一个执行特定任务的代码块。通过将代码组织成函数,我们可以重用代码,提高代码的可读性和易维护性。

如何定义函数

在Python中,使用def关键字后面跟函数名和圆括号来定义一个函数。函数名后面是可选的参数列表。函数定义的一般格式如下:

def 函数名(参数列表):
    # 函数体
    ...

函数的参数

函数的参数允许你定义函数时告诉它需要接收哪些信息。参数在函数调用时会由实际值替代,这些实际的值称为实参。

形参与实参

  • 形参:在函数定义时所指定的参数变量名。
  • 实参:在执行函数时,传入的值。

参数传入模式

位置传参

调用函数时,按照参数在函数定义中出现的顺序传递参数。

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

greet("Alice", "Nice to meet you!")

关键字传参

使用参数名来传递参数,不需要考虑顺序。

greet(message="Nice to meet you!", name="Alice")

结合使用位置传参和关键字传参

关键字传参必须放在位置传参之后。

greet("Alice", message="Nice to meet you!")  # 正确
greet(name="Alice", "Nice to meet you!")    # 错误

默认参数

可以为参数设置默认值,如果函数调用时没有提供该参数,将使用默认值。

def greet(name, message="Hello"): # 这个“hello”就是默认值
    print(f"{message}, {name}!")

动态参数

一个星号(*args)

当我们使用动态传参的时候,对于一个星号的,行业默认使用*args作为形参的名称

一个星号的动态参数实际是将用户传入的参数打包成为元组。

一个星号的动态传参只能使用位置传参

def sum_all(*args):
    return sum(*args)

print(sum_all(1, 2, 3, 4))

两个星号(**kwargs)

当我们使用动态传参的时候,对于一个星号的,行业默认使用**kwargs作为形参的名称

两个星号的**kwargs实际是将关键字参数打包成字典。

两个星号的动态传参只能使用关键字传参

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

print_kwargs(name="Alice", country="Wonderland")

混合使用

动态传参的两种方式可以混合使用,但是,一个星号的形参必须在两个星号的形参前面,传参也是位置传参必须在关键字传参前面。

def mixed_args(*args, **kwargs):
    print(args)
    print(kwargs)

mixed_args(1, 2, name="Alice")

函数的返回值

使用return关键字来指定函数的返回值。如果没有return语句,函数默认返回None

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

result = add(1, 2)
print(result)  # 输出 3

函数中return和print的区别

  • return会将一个值返回给调用者。
  • print会在屏幕上输出信息,不会返回任何值。

在编写函数时,应该根据需要选择是否使用returnprint。如果需要将结果传递给其他操作或函数,使用return;如果只是想显示信息,使用print

在Python中,returnprint在函数中有不同的用途和行为。下面是一个例子,展示了它们的区别:

# 使用return的函数
def calculate_sum(a, b):
    result = a + b
    return result  # 返回计算结果

# 使用print的函数
def print_sum(a, b):
    result = a + b
    print(result)  # 打印计算结果

# 调用使用return的函数
sum_result = calculate_sum(10, 20)
print("The sum is:", sum_result)  # 输出: The sum is: 30

# 调用使用print的函数
print_sum(10, 20)  # 输出: 30

在这个例子中,calculate_sum函数使用return来返回两个数的和。调用这个函数时,可以将返回的结果赋值给一个变量(如sum_result),然后根据需要使用这个结果。

另一方面,print_sum函数使用print来直接打印结果。调用这个函数时,它不会返回任何值,而是直接在控制台输出结果。这意味着你不能将print_sum的输出赋值给一个变量,因为它没有返回值。

区别总结:

  • 返回值

    • return:函数可以返回一个值,这个值可以被其他代码使用。
    • print:不返回任何值,只是将信息输出到控制台。
  • 赋值

    • return:可以捕获返回的值,并将其赋值给一个变量。
    • print:无法捕获输出,因为它不是函数的返回值。
  • 控制流

    • return:在执行到return语句时,函数会立即结束,并返回指定的值。
    • print:函数继续执行,直到结束,除非遇到return或其他终止条件。
  • 使用场景

    • return:当你需要函数的输出用于进一步的计算或逻辑判断时。
    • print:当你只需要显示信息,而不关心存储或进一步处理这个信息时。