一、参数
1、形参和实参
-
形参(形式参数)是函数定义时的传入参数
-
实参(实际参数)是函数调用时的传入参数
2、必备参数
- 必备参数指函数定义时括号内的参数,调用函数时必须提供对应的参数
3、位置参数
(1)基本介绍
- 位置参数指调用函数时根据函数定义的参数位置来传递参数,传递的参数和定义的参数顺序及个数必须一致
(2)演示
python
def user_info(name, age, gender):
print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")
user_info("jack", 20, "男")
user_info("mery", 18, "女")
user_info("tom", 25, "男")
# 输出结果
您的名字是:jack,年龄是:20,性别是:男
您的名字是:mery,年龄是:18,性别是:女
您的名字是:tom,年龄是:25,性别是:男
4、关键字参数
(1)基本介绍
- 调用函数时,可以使用关键字参数来明确指定传递给函数的参数,这允许参数在调用时的顺序与定义时不一致
(2)演示
python
def user_info(name, age, gender):
print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")
user_info(name="jack", age=20, gender="男")
user_info(gender="女", age=18, name="mery")
# 输出结果
您的名字是:jack,年龄是:20,性别是:男
您的名字是:mery,年龄是:18,性别是:女
(3)位置参数与关键字参数混用
- 位置参数与关键字参数可以混用,但位置参数必须在前,且对应参数位置
python
def user_info(name, age, gender):
print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")
user_info("tom", gender="男", age=25)
python
# 输出结果
您的名字是:tom,年龄是:25,性别是:男
5、默认参数
(1)基本介绍
-
函数定义时,可以为参数指定默认值
-
调用函数时,如果未提供具有默认值的参数,则使用默认值
-
带有默认值的参数必须位于参数列表的最后面
(2)演示
python
def greet(name="World"):
print(f"Hello {name}")
# 使用默认参数
greet()
# 不使用默认参数,提供参数值
greet("Tom")
# 输出结果
Hello World
Hello Tom
6、不定长参数
(1)基本介绍
- 不定长参数是指调用函数时传递任意数量的参数
-
*args:用于传递任意数量的非关键字参数(位置参数) -
**kwargs:用于传递任意数量的关键字参数
(2)演示
*args,不定长参数,用于传递任意数量的非关键字参数
python
def get_Info1(*args):
print(args, type(args))
get_Info1("tom")
get_Info1("jack", 18)
# 输出结果
('tom',) <class 'tuple'>
('jack', 18) <class 'tuple'>
**kwargs,不定长参数,用于传递任意数量的关键字参数
python
def get_Info2(**kwargs):
print(kwargs, type(kwargs))
get_Info2(name="mery")
get_Info2(name="jerry", age=20)
# 输出结果
{'name': 'mery'} <class 'dict'>
{'name': 'jerry', 'age': 20} <class 'dict'>
二、返回值
1、概念
-
如果函数没有 return 语句,也会默认返回 None
-
如果函数有 return 语句,后面没有返回值,那么默认返回 None
-
函数可以通过 return 语句返回一个或多个值
2、多个返回值
(1)基本介绍
- 函数可以通过 return 语句返回一个或多个值
python
return 【返回值】, 【返回值】
- 按照返回值的顺序,用对应顺序的多个变量接收,变量之间用逗号
,隔开
python
【变量 1】, 【变量 2】 = 【函数】()
- 多个返回值支持返回不同类型的数据
(2)演示
python
def test_return():
return 1, 2
x, y = test_return()
print(x)
print(y)
# 输出结果
1
2
三、递归
1、基本介绍
-
递归是指一个函数在其内部调用自身
-
递归通常用于解决可以分解为类似子问题的问题,例如,斐波那契数列、树的遍历等
- 注:递归必须明确指定终止条件以避免无限递归,否则可能导致程序崩溃
2、演示
python
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5))
# 输出结果
120
四、函数作为参数传递
1、基本介绍
-
函数本身也可以作为参数传入到另一个函数内
-
将函数作为参数传入的作用在于传入逻辑,而非传入数据
2、演示
python
def test_func(compute):
result = compute(10, 20)
print(result)
def compute1(num1, num2):
return num1 + num2
test_func(compute1)
def compute1(num1, num2):
return num1 * num2
test_func(compute1)
# 输出结果
30
200
五、lambda 匿名函数
1、基本介绍
- 匿名函数表示没有名称的函数,它们被定义后会赋值到一个变量上或者作为参数传递
python
【变量】 = lambda 【传入参数】:【表达式】
| 结构 | 说明 |
|---|---|
| lambda 关键字 | 表示定义匿名函数 |
| 传入参数 | 表示匿名函数的形参 |
| 函数表达式 | 表示匿名函数的逻辑代码,执行结果会被返回 表达式只能写一行,不能写多行 |
2、演示
- 匿名函数基本使用
python
add = lambda num1, num2: num1 + num2
print(add(1, 2))
# 输出结果
3
- 匿名函数作为参数传递
python
def test(compute):
result = compute(20, 30)
print(result)
test(lambda num1, num2: num1 + num2)
test(lambda num1, num2: num1 - num2)
# 输出结果
50
-10