函数及其应用场景

365赌网app官网 2025-10-13 17:19:51 admin 阅读 7659

函数及其应用场景

一, 函数的定义

函数的定义

所谓的函数就是一个被命名的, 独立的, 完成特定功能的代码段 (一段连续的代码), 并可能给调用它的程序一个返回值.

被命名的: 在Python中, 函数大多数是有名函数 (普通函数).当然Python中也存在没有名字的函数叫做匿名函数.

独立的, 完成特定功能的代码段: 在实际项目开发中, 定义函数前一定要先考虑一下, 这个函数是为了完成某个操作或某个功能而定义的(函数的功能一定要专一).

返回值: 很多函数在执行完毕之后, 会通过return关键字返回一个结果给调用它的位置

函数的作用

代码重用 (代码重复使用)模块化编程 (模块化编程的核心就是函数, 一般是把一个系统分解为若干个功能, 每个功能就是一个函数)

在编程领域, 编程可以分为两大类:

1. 模块化编程

2. 面向对象编程

函数的结构

def 函数名称([参数1, 参数2, ...]):

函数体

...

[return 返回值]

函数的调用

在python中, 函数和变量一样, 都是先定义后使用.

# 定义函数

def 函数名称([参数1, 参数2, ...]):

函数体

...

[return 返回值]

# 调用函数

函数名称(参数1, 参数2, ...)

二, 函数入门

案例1:使用Python代码, 编写一个打招呼程序

# 第一步: 见到老师打一声招呼

print('您好')

# 第二步: 见到老师打一声招呼

print('您好')

# 第三步: 见到老师打一声招呼

print('您好')

虽然以上程序可以满足程序的需求, 但是我们发现, 代码做了很多重复的工作, 我们可以对以上代码进行进一步优化, 避免代码的重复性编写.

案例2: 升级: 使用Python代码, 编写一个打招呼程序 (函数------一次编写, 多次利用)

# 定义函数 (封装函数)

def greet():

print('您好')

# 调用函数

# 见到一个老师, 打一声招呼

greet()

# 见到一个老师, 打一声招呼

greet()

# 见到一个老师, 打一声招呼

greet()

案例3: 升级: 使用Python代码编写一个打招呼程序, 可以实现向不同的人打招呼

# 定义一个函数, 同时为其定义一个参数

def greet(name):

print(f'{name}, 您好')

# 调用函数

# 见到了张老师, 打一声招呼

greet('老张')

# 见到了李老师, 打一声招呼

greet('老李')

# 见到了王老师, 打一声招呼

greet('老王')

案例4: 函数的设计原则"高内聚, 低耦合", 函数执行完毕后, 应该主动把数返回给调用处而不应该都交由print()等函数直接输出.

# 定义一个函数, 拥有name参数, 同时函数执行完毕后, 拥有一个return返回值

def greet(name):

# 执行一系列相关操作

return name + ', 您好'

# 调用函数

# 见到了张老师, 打一声招呼

print(great('老张'))

# 见到了李老师, 打一声招呼

print(greet('老李'))

# 见到了王老师, 打一声招呼

print(greet('老王'))

三, return返回值

思考1: 如果一个函数有两个return(如下图示), 程序将如何执行?

def return_num():

return 1

return 2

result = return_num()

print(result) # 1

答: 只执行了第一个return, 原因是因为return可以退出当前函数, 导致return下方的代码不执行.

思考2: 如果一个函数要有多个返回值, 该如何书写代码?

答: 在Python中, 理论上一个函数只能返回一个结果. 但是如果我们想让一个函数同时返回多个结果, 我们可以使用return元组的形式.

def return_num():

return 1, 2

result = return_num()

print(result)

print(type(result)) #

思考3: 封装一个函数, 参数有两个num1, num2, 求两个数的四则运算结果

四则运算: 加, 减, 乘, 除

def size(num1 , num2):

jia = num1 + num2

jian = num1 - num2

cheng = num1 * num2

chu = num1 / num2

return jia, jian, cheng, chu

# 调用size方法

print(size(20, 5))

四, 说明文档

定义一个函数后, 程序员在书写程序时通过注释能够快速提示这个函数的作用.如果代码太多, 程序员需要在很多代码中找到这个函数定义的位置, 才能看到注释, 如果想更方便的查看函数的作用, 我们需要通过函数的说明文档(函数的说明文档也叫做函数的文档说明).

五, 函数的嵌套

所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数.

函数嵌套的格式

def funcB() # 1

print('这是funcB函数的函数体部分...') # 2

# 3

# 4

def funcA() # 5

print('-' * 40) # 6

print('这是funcA函数的函数体部分...') # 7

# 假设我们在调用funcA函数时, 需要使用到funcB的功能, 则可以嵌套到funcA方式中 # 8

funcB() # 9

print('-' * 40) # 10

# 11

# 12

# 调用funcA函数 # 13

funcA() # 14

函数嵌套的执行流程

Python代码遵循一个“顺序原则”,从上往下,从左往右一行一行执行.当代码执行到第1行时,则在计算机内存中定义一个funcB函数。但是其内部的代码并没有真正的执行,跳过第2行继续向下运行.执行到第5行,发现又声明了一个funcA的函数,根据函数的定义原则,定义就是在内存中声明有这样一个函数,但是没有真正的调用和执行.代码继续向下执行,到第14行,发现funcA(),函数体()就代表调用funcA函数并执行其内部的代码。程序返回到第6行,然后一步一步向下执行,输出40个横杠,然后打印这是funcA函数的函数体部分…,然后继续向下执行,遇到funcB函数,后边有一个圆括号代表执行funcB函数,原程序处于等待状态.进入funcB函数,执行输出这是funcB函数的函数体部分…,当代码完毕后,返回funcA函数中funcB()的位置,继续向下执行,打印40个横杠.最终程序就执行结束了.

函数的应用案例

案例需求

奇偶求和.

编写一个程序,求出一个列表中偶数和奇数的和.

定义函数calculate_sum(),参数为一个数字列表numbers_list, 分别求出偶数和奇数的和.

最后,返回一个列表,第一个元素为偶数的和,第二个元素为奇数的和.

实现思路

定义函数 calculate_sum(), 参数为一个数字列表 numbers_list.初始化偶数和为0.初始化奇数和为0.遍历数字列表中的每个数字.检查数字是否为偶数.如果是偶数, 加到偶数和中.如果是奇数, 加到奇数和中.返回一个列表, 第一个元素为偶数的和, 第二个元素为奇数的和.从输入中获取一个整数列表.调用calculate_sum() 函数并获取结果.打印结果.

# 1. 定义函数 calculate_sum(), 参数为一个数字列表 numbers-list.

def calculate_sum(numbers_list):

# 2. 初始化偶数和为0.

even_sum = 0

# 3. 初始化奇数和为0.

odd_sum = 0

# 4. 遍历数字列表中的每个数字.

for num in numbers_list:

# 5. 检查数字是否为偶数.

if num % 2 == 0:

# 6. 如果是偶数, 加到偶数和中.

even_sum += num

else:

# 7. 如果是奇数, 加到奇数和中.

odd_sum += num

# 8. 返回一个列表, 第一个元素为偶数的和, 第二个元素为奇数的和.

return [even_sum, odd_sum]

# 9. 从输入中获取一个整数数列.

numbers_list = [1, 2, 3, 4, 5, 6, 7]

# 10. 调用calculate_sum()函数并获取结果.

result = calculate_sum(numsbers_list)

# 11. 打印结果.

print(f'偶数的和是: {result[0]}, 奇数的和是: {result[1]}')

五, 总结

Q1:知道函数的作用

模块化编程提高代码的复用性

Q2:函数的定义格式

def 函数名(形参1, 形参2, ...)

函数体

return具体的返回值

Q3: 函数的调用格式

变量名 = 函数名(实参1, 实参2, …)

Q4: 说明文档的作用

如果代码太多, 程序员需要在很多代码中找到这个函数定义的位置, 才能看到注释, 如果想更方便的查看函数的作用, 我们需要通过函数的说明文档(函数的说明文档也叫做函数的文档说明).

Q5: 函数嵌套调用流程

默认按照顺序结构, 从上往下逐级调用

相关文章

am3主板芯片组有哪些(am3主板支持什么cpu)

探究狗为何会突然死亡的原因及预防方法(揭开狗突然死亡的谜团,提供保护你的爱宠的有效措施)

苹果7壁纸图片

今晚世界杯竞猜赔率 今晚世界杯预测比分