5-1.Python 编码进阶 - 函数进阶(参数、返回值、递归、函数作为参数传递、lambda 匿名函数)

一、参数

1、形参和实参
  1. 形参(形式参数)是函数定义时的传入参数

  2. 实参(实际参数)是函数调用时的传入参数

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)基本介绍
  1. 函数定义时,可以为参数指定默认值

  2. 调用函数时,如果未提供具有默认值的参数,则使用默认值

  3. 带有默认值的参数必须位于参数列表的最后面

(2)演示
python 复制代码
def greet(name="World"):
    print(f"Hello {name}")


# 使用默认参数
greet()

# 不使用默认参数,提供参数值
greet("Tom")
复制代码
# 输出结果

Hello World
Hello Tom
6、不定长参数
(1)基本介绍
  • 不定长参数是指调用函数时传递任意数量的参数
  1. *args:用于传递任意数量的非关键字参数(位置参数)

  2. **kwargs:用于传递任意数量的关键字参数

(2)演示
  1. *args,不定长参数,用于传递任意数量的非关键字参数
python 复制代码
def get_Info1(*args):
    print(args, type(args))


get_Info1("tom")
get_Info1("jack", 18)
复制代码
# 输出结果

('tom',) <class 'tuple'>
('jack', 18) <class 'tuple'>
  1. **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、概念
  1. 如果函数没有 return 语句,也会默认返回 None

  2. 如果函数有 return 语句,后面没有返回值,那么默认返回 None

  3. 函数可以通过 return 语句返回一个或多个值

2、多个返回值
(1)基本介绍
  1. 函数可以通过 return 语句返回一个或多个值
python 复制代码
return 【返回值】, 【返回值】
  1. 按照返回值的顺序,用对应顺序的多个变量接收,变量之间用逗号 , 隔开
python 复制代码
【变量 1】, 【变量 2】 = 【函数】()
  1. 多个返回值支持返回不同类型的数据
(2)演示
python 复制代码
def test_return():
    return 1, 2


x, y = test_return()

print(x)
print(y)
复制代码
# 输出结果

1
2

三、递归

1、基本介绍
  1. 递归是指一个函数在其内部调用自身

  2. 递归通常用于解决可以分解为类似子问题的问题,例如,斐波那契数列、树的遍历等

  • 注:递归必须明确指定终止条件以避免无限递归,否则可能导致程序崩溃
2、演示
python 复制代码
def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * factorial(n - 1)


print(factorial(5))
复制代码
# 输出结果

120

四、函数作为参数传递

1、基本介绍
  1. 函数本身也可以作为参数传入到另一个函数内

  2. 将函数作为参数传入的作用在于传入逻辑,而非传入数据

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、演示
  1. 匿名函数基本使用
python 复制代码
add = lambda num1, num2: num1 + num2

print(add(1, 2))
复制代码
# 输出结果

3
  1. 匿名函数作为参数传递
python 复制代码
def test(compute):
    result = compute(20, 30)
    print(result)


test(lambda num1, num2: num1 + num2)
test(lambda num1, num2: num1 - num2)
复制代码
# 输出结果

50
-10
相关推荐
FITA阿泽要努力2 小时前
Fork Agent:共享上下文的艺术
开发语言·python·agent
小蒜学长2 小时前
基于Spring Boot+Vue3的在线游戏技术指导师匹配系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·在线游戏技术指导
文丑颜不良啊2 小时前
LeetCode226~250题目解析
java·leetcode
Dovis(誓平步青云)2 小时前
逆变器报警却找不到板子,热斑图怎样定位到具体组串
java·开发语言·人工智能·机器学习·卷积神经网络
DeeGLMath2 小时前
optimtool最新版研究梯度优化
python·optimtool·梯度优化
掘金者阿豪2 小时前
数据集成产品接上以后,报表为什么还是对不上?聊聊金仓 KFS 的落地细节
后端
坐吃山猪2 小时前
Python-Hermite基函数
开发语言·python
tonydf2 小时前
人机协同定位一个越用越慢的疑难杂症
后端·ai编程
服务器硬件项目经理2 小时前
全系列目录导航
服务器·gru·硬件