Python3(16) 函数
在 Python 编程中,函数是实现代码模块化、提高代码复用性的重要工具。通过将特定功能封装成函数,可以使代码结构更加清晰,便于维护和扩展。通过详细的代码示例,系统地学习 Python3 函数的相关知识,方便日后复习回顾。
一、函数的定义与调用
1.1 函数的基本定义
Python 中使用def
关键字定义函数,基本语法结构如下:
def function_name(parameters):"""函数文档字符串,用于描述函数功能"""statementsreturn expression
其中,function_name
是函数名,parameters
是参数列表(可以为空),statements
是函数体中的执行语句,return expression
用于返回函数执行结果(可选)。例如,定义一个简单的加法函数:
def add_numbers(a, b):"""计算两个数的和:param a: 第一个加数:param b: 第二个加数:return: 两数之和"""return a + b
1.2 函数的调用
定义好函数后,通过函数名和参数来调用函数。例如:
result = add_numbers(3, 5)
print(result) # 输出: 8
调用add_numbers
函数时,传入参数3
和5
,函数执行后返回两数之和,并将结果赋值给result
变量。
二、函数参数
2.1 必备参数
必备参数是调用函数时必须传入的参数,它们在函数定义中按照顺序依次排列。例如:
def greet(name):print(f"Hello, {name}!")# 正确调用
greet("Alice") # 输出: Hello, Alice!# 错误调用,缺少参数会报错
# greet() # 报错: TypeError: greet() missing 1 required positional argument: 'name'
2.2 关键字参数
关键字参数允许在调用函数时使用参数名=值
的形式指定参数,这样可以打乱参数的顺序。例如:
def describe_person(name, age):print(f"{name} is {age} years old.")describe_person(age=30, name="Bob") # 输出: Bob is 30 years old.
2.3 默认参数
在定义函数时,可以为参数设置默认值。当调用函数时未传入该参数,函数将使用默认值。例如:
def say_hello(message="Hello"):print(message)say_hello() # 输出: Hello
say_hello("Hi!") # 输出: Hi!
2.4 不定长参数
*args
(元组形式):用于接收任意数量的非关键字参数,这些参数会被封装成一个元组。例如:
def sum_all(*args):result = 0for num in args:result += numreturn resultprint(sum_all(1, 2, 3, 4, 5)) # 输出: 15
**kwargs
(字典形式):用于接收任意数量的关键字参数,这些参数会被封装成一个字典。例如:
def print_info(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")print_info(name="Alice", age=25, city="New York")
三、函数返回值
3.1 返回单个值
函数可以通过return
语句返回一个值,例如:
def square(x):return x ** 2result = square(4)
print(result) # 输出: 16
3.2 返回多个值
Python 支持函数返回多个值,实际上返回的是一个元组。例如:
def divide(a, b):quotient = a // bremainder = a % breturn quotient, remainderq, r = divide(10, 3)
print(f"商: {q}, 余数: {r}") # 输出: 商: 3, 余数: 1
四、函数的嵌套定义与调用
4.1 嵌套函数定义
在一个函数内部可以定义另一个函数,内部函数只能在外部函数内被调用。例如:
def outer_function():print("进入外部函数")def inner_function():print("进入内部函数")inner_function()print("退出外部函数")outer_function()
4.2 闭包
闭包是指内部函数引用了外部函数的变量,并且外部函数返回内部函数的引用。例如:
def multiplier(factor):def multiply(x):return x * factorreturn multiplydouble = multiplier(2)
print(double(5)) # 输出: 10
五、匿名函数(Lambda 函数)
使用lambda
关键字可以创建匿名函数,其语法为:lambda arguments: expression
。例如:
add = lambda a, b: a + b
print(add(3, 4)) # 输出: 7
匿名函数常用于需要简短函数的场景,如与map()
、filter()
、sorted()
等函数结合使用:
nums = [1, 2, 3, 4, 5]
squared_nums = list(map(lambda x: x ** 2, nums))
print(squared_nums) # 输出: [1, 4, 9, 16, 25]
六、函数的文档字符串
在函数定义中,使用三引号"""
或'''
添加文档字符串,用于描述函数的功能、参数和返回值。例如:
def factorial(n):"""计算n的阶乘:param n: 正整数:return: n的阶乘值"""result = 1for num in range(1, n + 1):result *= numreturn result
通过help()
函数可以查看函数的文档字符串:
help(factorial)
七、总结
Python3 函数通过参数传递、返回值、嵌套定义等特性,实现了代码的模块化和复用性。掌握函数的定义、参数类型、返回值以及匿名函数等核心知识,能够帮助我们将复杂问题分解为多个独立的功能模块,提升代码的可读性和可维护性。在实际编程中,应根据需求合理选择函数的参数形式和返回值类型,灵活运用函数实现高效的编程逻辑。