AI项目博客
记录 AI 工程实践与大模型应用

Python 学习笔记 10|函数入门 · 返回值

4. 返回值

4.1. 什么是返回值

函数返回值:函数执行完毕后,会把执行结果交给调用者,这个执行结果就是函数的返回值。

我们之前用过的这些内置函数,都有返回值:

对于自定义的函数,即便我们不去设置返回值,函数也会默认返回None,由于None表示空,所以如果一个函数的返回值是None的话,就也可以说:这个函数“没有”返回值。

# 定义函数
def add(n1, n2):
    print(f'我收到了:{n1}、{n2},二者相加是:{n1 + n2}')
    print('add函数执行完毕了')

# 调用函数
result = add(100, 200)
print(result)  # None

4.2. 如何设置返回值

使用return关键字可以设置函数的返回值,return的作用有两个,分别是:

  • 结束函数的运行。
  • 把return后面的值,作为函数的返回值。
# 定义函数
def add(n1, n2):
    print(f'我收到了:{n1}、{n2},二者相加是:{n1 + n2}')
    print('add函数执行完毕了')
    return n1 + n2

# 调用函数
result = add(100, 200)
print(result)

# print函数是没有返回值的
res = print('hello')
print(res)

5. 全局作用域 VS 局部作用域

5.1. 什么是作用域?

作用域就是变量能起作用的范围(变量在哪里能用,在哪里不能用),Python 中有多种作用域,我们先来学习:全局作用域、局部作用域。

5.2. 全局作用域 _ 全局变量

  • 全局作用域:整个.py文件最外层的范围,就是全局作用域。
  • 全局变量:写在全局作用域中的变量,就叫:全局变量,全局变量在整个程序中都可以访问。

5.3. 局部作用域 _ 局部变量

  • 局部作用域:函数的内部范围,就是局部作用域。
  • 局部变量:写在局部作用域中(函数内部)的变量,叫:局部变量,它只能在当前函数中使用。

5.4. global 关键字

在函数内部使用global关键字,可以声明变量为全局变量。

a = 100

def test():
    global a  # 使用 global 关键字,将a声明为全局变量。
    a = 300
    print('函数中的打印(a)', a)
test()
print('全局的打印(a)', a)

5.5. 小测试

请说出如下代码的输出结果(具体分析请参考视频教程)

# 全局作用域 与 局部作用域,以及global的使用
a = 100
b = 200

def test():
    c = ''
    d = '你好啊'
    global a
    a = 300
    print('函数中的打印(a)', a)
    print('函数中的打印(b)', b)
    print('函数中的打印(c)', c)
    print('函数中的打印(d)', d)
test()
print('***************')
print('全局的打印(a)', a)
print('全局的打印(b)', b)
print(c)
print(d)

# 局部作用域 和 局部变量,会在函数调用时创建,在函数执行结束后自动销毁
def test2():
    m = 100
    m += 1
    print(f'我是test2函数中打印的m:{m}')
test2()
test2()
test2()

# 全局作用域 与 全局变量,会在程序开始时创建,在程序结束后销毁
n = 100
def test3():
    global n
    n += 1
    print(f'我是test3函数中打印的n:{n}')
test3()
test3()
test3()
print(n)

6. 嵌套调用

嵌套调用:在一个函数执行的过程中,调用了另外一个函数,例如下面的代码:

如下代码的具体分析过程,请参考视频教程。

# 函数嵌套调用测试1
def greet(name, msg):
    print(f'我叫{name},我想说的话在下面:')
    speak(msg)
    print('嗯,我想说的结束了')

def speak(msg):
    print('----------')
    print(msg)
    print('----------')

greet('张三', '你好啊')

# 函数嵌套调用测试2
def test1():
    print('进入 test1 函数')
    test2()
    print('退出 test1 函数')

def test2():
    print('进入 test2 函数')
    test3()
    print('退出 test2 函数')

def test3():
    print('进入 test3 函数')
    print('***正在执行 test3 函数')
    print('退出 test3 函数')

test1()

7. 递归调用

1️⃣递归调用:函数自己调用自己的一种操作。

def welcome():
    print("你好啊!")
    welcome() # welcome 函数内部在调用自己

welcome()

📢警告:上述代码确实是递归调用,但会出现死循环!

2️⃣递归必须要具备终止条件(不能无限的一直调用,总得有停下来的时候。)

如下代码使用递归调用的方式,输出了 10 次“你好啊!”

# 使用递归打印n次“你好啊”(从大到小)
def welcome(n):
    print(f'你好啊{n}')
    if n > 1:
        welcome(n - 1)
# 调用函数
welcome(5)

# 使用递归打印n次“你好啊”(从小到大)
def welcome(n):
    if n > 1:
        welcome(n - 1)
    print(f'你好啊{n}')
# 调用函数
welcome(5)

3️⃣递归的应用:使用递归完成一个数的阶乘

如下代码的具体分析过程,请参考视频教程。

# 使用递归求阶乘
def factorial(num):
    if num == 0:
        return 1
    else:
        return num * factorial(num - 1)
# 调用函数,求5的阶乘
result = factorial(6)
print(result)

8. 函数说明文档

函数说明文档:写在函数里的文字说明,用来描述:函数的功能、需要哪些参数、返回什么结果,它的语法和普通字符串一样,用三引号包裹:

def add(n1, n2):
    """
    计算两个数相加的结果
    :param n1:第一个数
    :param n2:第二个数
    :return:二者相加的结果
    """
    return n1 + n2

result = add(1, 2)

有了函数说明文档之后,可以通过鼠标悬浮的方式,查看函数的具体信息,如下图:

9. 函数综合案例

完成一个健身挑战赛程序,功能演示见下图:

具体实现代码如下:

如下代码的具体分析过程,请参考视频教程。

def calc_total(*nums):
    """
    计算总运动量(个)
    :param nums: 每一天的运动量(可变参数)
    :return: 总运动量(个)
    """
    # 备注:nums的类型是元组(下一章马上就讲了),sum是内置函数,可以对元组中的数据求和
    return sum(nums)

def calc_avg(total, days=7):
    """
    计算平均值
    :param total: 总运动量(个)
    :param days: 天数(默认值是7)
    :return: 平均值
    """
    return total / days

def check_success(total, goal=120):
    """
    判断本次挑战是否成功
    :param total: 总运动量
    :param goal: 成功数量(默认值为120)
    :return: 成功或失败的具体信息
    """
    if total >= goal:
        return '✅恭喜!挑战成功!'
    else:
        return '❌抱歉!挑战失败!'

def main(title, duration, goal):
    """
    主函数,用于开始一场挑战赛
    :param title: 比赛标题
    :param duration: 比赛持续天数
    :param goal: 目标运动量
    :return: None
    """
    print(f'【{title}】【{duration}天】✊️挑战赛(请输入每天的数量)')
    num1 = int(input('第1天:'))
    num2 = int(input('第2天:'))
    num3 = int(input('第3天:'))
    # 计算总数
    total = calc_total(num1, num2, num3)
    # 计算平均值
    avg = calc_avg(total, duration)
    # 判断挑战是否成功
    result = check_success(total, goal)
    # 打印相关信息
    print(f'【{title}】【{duration}天】健身总结')
    print(f'总数:{total},平均值:{avg:.1f}')
    print(result)

main('俯卧撑', 3, 40)
赞(0)
未经允许不得转载:AI项目博客 » Python 学习笔记 10|函数入门 · 返回值

评论 抢沙发

AI项目博客

专注 AI 工程化落地 —— 覆盖智能体、大模型、Java AI 与 Python 的学习笔记,以及 AI 平台的项目实战记录。

关于本站文章归档

登录

找回密码

注册