欢迎访问宙启技术站
智能推送

Python 函数基础教程

发布时间:2023-05-25 12:48:12

Python 是一个十分流行的编程语言,具备快速开发和易读易写的特点。在 Python 中,函数是一个至关重要的概念。Python 函数可以让你将重复的代码段封装在一起,便于代码的重用和维护。本文将介绍 Python 函数的基础知识,包括函数定义、函数调用、参数传递等内容。

函数定义

函数在 Python 中的定义形式如下:

def function_name(parameters):
    """函数的文档字符串"""
    # 函数的主体代码块
    return [expression]

其中,

- function_name:函数名,用于调用函数;

- parameters:函数参数列表,可以为零个或多个参数,多个参数以逗号分隔;

- 函数主体代码块:执行具体的操作;

- return:函数返回值,可选。

下面是一个简单的例子:

def greet(name):
    """打印欢迎信息"""
    print("Hello, " + name + ". Welcome to Python!")

该函数的参数为 name,函数主体代码块为打印欢迎信息。函数没有返回值,因为没有 return 语句。

函数调用

调用函数时,需要传递函数的参数。参数可以是任意 Python 对象,包括数值、字符串、其他函数等。

以前面定义的 greet() 函数为例,函数调用的形式为:

greet('Tom')  # 输出:Hello, Tom. Welcome to Python!

在使用函数时,需要注意以下几点:

1. 传递参数时,需要按照函数定义中参数列表的顺序传递参数;如果参数数量不匹配会导致异常。

2. 如果函数有返回值,需要将返回值赋值给一个变量。

下面是一个带返回值的函数的例子:

def cube(num):
    """计算一个数的立方"""
    return num**3

result = cube(3)  # 返回值为 27

参数传递

函数可以接受不同类型和数量的参数,并且参数可以是必需的或可选的。可以通过以下方式传递参数:

1. 位置参数:按照函数定义中参数的顺序传递参数;

2. 关键字参数:通过参数名指定传递的参数;

3. 默认参数:在函数定义时为参数指定默认值;

4. 可变参数:能够处理不定数量的参数;

5. 关键字可变参数:能够处理不定数量的关键字参数。

位置参数

位置参数是最常见的参数传递方式,它是按照定义中参数的顺序依次传递参数,如下面的例子:

def describe_pet(animal_type, pet_name):
    """打印宠物信息"""
    print("I have a " + animal_type + ".")
    print("My " + animal_type + "'s name is " + pet_name.title() + ".")

describe_pet('dog', 'harry') # 输出:I have a dog. My dog's name is Harry.

在上面的例子中,函数接受两个位置参数 animal_type 和 pet_name。

关键字参数

关键字参数通过参数名传递参数,可以不考虑参数顺序。关键字参数的形式为参数名=参数值,如下面的例子:

def describe_pet(animal_type, pet_name):
    """打印宠物信息"""
    print("I have a " + animal_type + ".")
    print("My " + animal_type + "'s name is " + pet_name.title() + ".")

# 使用关键字参数,并且参数的顺序与函数定义中不一致
describe_pet(pet_name='harry', animal_type='dog')
# 输出:I have a dog. My dog's name is Harry.

在上面的例子中,两个参数 animal_type 和 pet_name 交换了位置,但是由于使用关键字参数,代码运行仍然正确。

默认参数

默认参数在函数定义时指定一个值,如果调用函数时没有传递该参数,则使用默认值。默认参数必须放在非默认参数后面,例如:

def make_pizza(topping='cheese'):
    """制作披萨"""
    print("Your pizza has " + topping + ".")

# 使用默认参数
make_pizza()
# 输出:Your pizza has cheese.

# 使用非默认参数
make_pizza('mushroom')
# 输出:Your pizza has mushroom.

在上面的例子中,定义了一个默认参数 topping,如果没有传递该参数,则使用默认值 cheese。

可变参数

可变参数可以接受任意数量的参数,通过在参数名前添加 * 即可定义可变参数。在函数中,可变参数被视为元组类型。例如:

def make_pizza(*toppings):
    """制作披萨"""
    print("Your pizza has the following toppings:")
    for topping in toppings:
        print("- " + topping)

# 使用可变参数
make_pizza('cheese', 'mushroom', 'onion')
# 输出:
# Your pizza has the following toppings:
# - cheese
# - mushroom
# - onion

在上面的例子中,函数定义时添加了可变参数 *toppings,调用函数时可以传递任意数量的参数。在函数中,可变参数 toppings 被视为元组类型,因此可以通过 for 循环迭代输出。

关键字可变参数

关键字可变参数可以接受任意数量的关键字参数,通过在参数名前添加 ** 即可定义关键字可变参数。在函数中,关键字可变参数被视为字典类型。例如:

def build_profile(first, last, **user_info):
    """创建用户个人资料"""
    profile = {}
    profile['first_name'] = first
    profile['last_name'] = last
    for key, value in user_info.items():
        profile[key] = value
    return profile

# 使用关键字可变参数
user_profile = build_profile('John', 'Doe', location='California', field='Computer Science')
print(user_profile)
# 输出:{'first_name': 'John', 'last_name': 'Doe', 'location': 'California', 'field': 'Computer Science'}

在上面的例子中,函数定义时添加了关键字可变参数 **user_info,调用函数时可以传递任意数量的关键字参数。在函数中,关键字可变参数 user_info 被视为字典类型,因此可以通过 for 循环迭代输出。

函数文档注释

函数的文档注释是函数的说明文档,用于描述函数的功能、参数、返回值等信息。在函数定义中,可以使用三个引号(''' 或 """)来定义文档注释,例如:

def greet(name):
    """打印欢迎信息
    
    Args:
        name (str): 用户名
    
    Returns:
        str: 欢迎信息
    """
    return "Hello, " + name + ". Welcome to Python!"

在上面的例子中,使用 Python 的注释语法,针对函数的参数和返回值进行了说明。函数的文档注释可以通过 help() 函数进行查看,如下所示:

print(help(greet))
# 输出:
# Help on function greet in module __main__:
# 
# greet(name)
#     打印欢迎信息
#     
#     Args:
#         name (str): 用户名
#     
#     Returns:
#         str: 欢迎信息

总结

本文介绍了 Python 函数的基础知识,包括函数定义、函数调用、参数传递、函数文档注释等内容。在实际的开发中,熟练掌握 Python 函数的使用可以让代码更加清晰、简洁、易于维护。