跳至主要内容

Python 中的函数

Functions in Python

Python 中的函数在编程中扮演着至关重要的角色,因为它们充当可执行特定任务的可重用代码块。一旦定义好,你就可以通过使用函数名并在括号中传递参数(可选)来调用 Python 中的函数。你可以创建多个函数,每个函数都有其特定的功能,从而更容易组织和构建你的代码。函数类型和函数文档是必不可少的元素,可以使你的代码更具可读性和可调试性,尤其是在处理大型项目时。从这篇文章中,我们将了解什么是 Python 中的函数以及如何调用函数。

函数式编程

Python 支持多种编程范例,其中之一是函数式编程。函数式编程是一种编程范例,它专注于使用纯函数,避免共享状态、可变数据和副作用。在 Python 中,此范例通常通过使用高阶函数和 lambda 表达式来使用。

高阶函数示例

def apply_twice(f):
    def wrapper(x):
        return f(f(x))
    return wrapper
 
def add_two(x):
    return x + 2
 
### Using apply_twice to add two to a number four times

applied_four_times = apply_twice(apply_twice(add_two))
result = applied_four_times(10) 
print(result) ### Result will be 18

Lambda 表达式示例

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
### squared_numbers will be [1, 4, 9, 16, 25]

总之,Python 通过高阶函数和 lambda 表达式支持函数式编程范例。

如何在 Python 中编写函数

在 Python 中,使用 def 关键字定义函数,后跟函数名和可能包含参数的一组括号。执行任务的代码块缩进在 def 语句之下。

要调用 Python 中的函数,只需使用函数名,后跟包含任何必要参数的括号。

基本函数示例

def greet(name):
    print("Hello, " + name)

greet("John") # Output: Hello, John

带有返回值的函数示例

def square(number):
    return number * number

result = square(4)
print(result) # Output: 16

当函数有 return 语句时,它可以返回单个值或多个以逗号分隔的值。然后,这些值可以分配给变量或直接使用。

在 Python 中创建函数时,最好通过为参数和返回值添加类型提示来指定函数类型。这使得其他开发人员更容易理解函数的预期输入和输出。

def sum_numbers(num1: int, num2: int) -> int:
    return num1 + num2

print(sum_numbers(2, 3)) # Output: 5

可以使用文档字符串添加函数文档,描述函数的作用、其参数及其返回值。可以使用 help 函数访问此信息。

def greet(name):
    """Print a greeting message to the person with the given name."""
    print("Hello, " + name)

help(greet)

在 Python 中,函数参数可以具有默认值,如果在调用函数时未提供值,则使用这些默认值。

def greet(name="there"):
    print("Hello, " + name)

greet() # Output: Hello, there
greet("John") # Output: Hello, John

main 函数是 Python 中的一个约定,其中要直接执行的代码放在 if __name__ == '__main__': 块中,确保仅在直接运行文件时执行该代码,而不是作为模块导入。

def main():
    print("Hello World")

if __name__ == "__main__":
    main()

Python 中的函数类型:参数和返回值类型

函数类型指定了参数的类型和函数的预期返回值。Python 支持函数的位置、关键字、默认和可变长度参数。函数参数是指传递给函数的值,返回值是执行代码的结果。

以下是 Python 中一些函数的示例

# Example of a function that returns a value

def calculate_area(width, height):
    area = width * height
    return area

# Example of a function that returns multiple values 

def get_student_details(name, age, student_id):
    return name, age, student_id

在 Python 中,可变长度函数参数使用 * 符号表示。以下是一个接受可变长度参数的 Python 函数示例

def calculate_sum(*numbers):
    total = 0
    for num in numbers:
        total += num
    return total
# Here's how you can call the calculate_sum function with different numbers of arguments:
sum1 = calculate_sum(1, 2, 3)   # sum1 is 6
sum2 = calculate_sum(10, 20)    # sum2 is 30
sum3 = calculate_sum(5)         # sum3 is 5

在此示例中,函数定义中的 * numbers 语法告诉 Python 允许将任意数量的参数传递给函数。然后,该函数使用循环遍历所有参数并计算它们的总和。

如你所见,你可以向 calculate_sum 函数传递任意数量的参数,它将正常工作。

如何在 Python 中正确命名函数

  1. 函数名称必须以字母或下划线 _ 开头,后跟任意组合的字母、数字或下划线。示例:def my_function():

  2. 函数名称应具有描述性,并传达函数的目的。示例:def calculate_total():

  3. 函数名称区分大小写,这意味着 my_functionMy_Function 是不同的名称。示例:def my_function():def My_Function(): 是两个不同的函数。

  4. 函数名称不应与Python 关键字相同,例如 printif。示例:def print(): 不是一个有效的函数名称。

  5. 函数名称应遵循“snake_case” 命名约定,其中单词用下划线分隔。此约定使函数名称更具可读性和易于理解。示例:def calculate_total_with_discount():

总体而言,建议选择一个具有描述性易于理解且遵循 Python 函数命名约定的函数名称。

如何从函数返回多个值

在 Python 中,函数只能直接返回单个值。但是,你可以通过将它们打包到元组、列表或字典等数据结构中来返回多个值。以下是一个使用元组返回多个值的函数示例

def get_user_info():
    name = "John Doe"
    age = 30
    email = "[email protected]"
    return name, age, email

# Call the function and unpack the returned values
user_name, user_age, user_email = get_user_info()

print("Name:", user_name)
print("Age:", user_age)
print("Email:", user_email)

# Output:
# Name: John Doe
# Age: 30
# Email: [email protected]

此函数 get_user_info() 返回用户的 nameageemail。通过在 return 语句中用逗号分隔变量,Python 会自动创建一个包含这些值的元组。然后,我们可以在函数调用期间将元组解包到单独的变量中。

与我们合作!

不要犹豫,在 GitHub 上为 Python 教程做出贡献:创建一个 fork,更新内容并发出 pull 请求。

Profile picture for user AliaksandrSumich
Python 工程师,第三方 Web 服务集成专家。
更新时间:05/03/2024 - 22:40
Profile picture for user angarsky
已审阅并批准