Python 函数基础教程
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 函数的使用可以让代码更加清晰、简洁、易于维护。
