python函数的返回值、作用域及递归、内置、匿名函数

本文详细探讨了Python函数的返回值,包括定义、多个返回值的情况以及默认的隐含返回值None。接着介绍了函数作用域的四种类型:局部、嵌套、全局和内建。接着讲解了递归函数的概念,并通过实例展示了如何计算阶乘。此外,还介绍了内置函数的使用以及如何通过lambda创建匿名函数。最后,提供了三个关于函数使用的练习题,涉及函数传参、列表处理和字典排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

函数的返回值

当两个函数之间,想要互相使用到内部变量时,就可以应用到函数的返回值。

1.函数的返回值定义

1.使用 return 关键字返回内容
2.将内容 返回到 函数调用处
3.函数体中没有 return 语句时,函数运行结束, 则默认返回 None,也被称为隐含返回值

栗子:

def fx(a):
    c = 2
    b = a ** c
    return b


def fxy(e):
    i = 3
    j = e ** i
    print(j)


def temp_1():
    a, b, c = (5, 9, 8)
    return a, b, c


d = 5
res_1 = fxy(d)
res_2 = temp_1()
print(fx(d))
print(res_1)
print(res_2)
125
25
None
(5, 9, 8)

2.函数多个返回值

1.当执行函数体内代码时,遇到第一个 return 就将指定值返回到函数调用处,也就是执行到 return这行代码,后面的都不执行了。
2.多个返回值时,用逗号隔开,但默认为元组

3.函数作用域介绍

变量的作用域决定了在哪一部分程序可以访问哪个特定的变 量名称。Python 的作用域一共有4种,他们分别是:
1.L(local): 局部作用域,即函数中定义的变量;
2.E(enclosing):嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
3.G(global):全局变量,就是模块级别定义的变量;
4.B(build-in):内建作用域,系统固定模块里面的变量,比如:int()等;

二、递归函数

函数Func(args)直接或间接调用函数本身,则该函数称为递归函数。

栗子:输出5的阶乘。

def temp_1(num):
    if num > 1:
     return num * temp_1(num-1)
    else:
        return 1


res = temp_1(5)
print(res)

三、内置函数

输出1-10奇数

def temp_2(num):
    return num % 2 == 1


print(list(filter(temp_2, range(1, 10))))
[1, 3, 5, 7, 9]

输出1+2+…+10的值

from functools import reduce


def temp_3(x, y):
    return x + y


print(reduce(temp_3, range(1, 10)))
45

四、匿名函数

当我们在传入函数时,有些时候,不需要重复调用该函数,直接传入匿名函数更方便,也无需担心 函数名冲突,并且还可以将匿名函数赋值给一个变量,再利用变量来调用该函数。

语法:lambda x:x*x
关键字 lambda表示 匿名函数
冒号前面 的表示函 数参数
冒号后面 的表示函 数返回值

def test(a, b, func):
    res = func(a, b)
    return res


nums = test(2, 3, lambda x, y: x * y)
print(nums)

6

五、作业

作业1

定义一个函数 完成用户输入的三个数字的求和 以及在另一个函数求该和的平均值(用到函数传参,函数返回值)

sh_1 = float(input('请输入数值1:'))
sh_2 = float(input('请输入数值2:'))
sh_3 = float(input('请输入数值3:'))

res_1 = lambda a, b, c: a + b + c


res_2 = lambda a, b, c: (a + b + c) / 3


print(res_1(sh_1, sh_2, sh_3))
print(res_2(sh_1, sh_2, sh_3))

作业2

将列表l输出如下。l = [“jack”,(“tom”,23),“rose”,(14,55,67)] 提示:用递归实现

答:

li = ["jack", ("tom", 23), "rose", (14, 55, 67)]


def temp_1(a):
    for i in a:
        if isinstance(i, str) or isinstance(i, int):
            print(i)
        else:
            temp_1(i)


res = temp_1(li)
print(res)

作业3

infors = [{‘name’:‘qian’, ‘age’:28},{‘name’:‘amy, ‘age’:20},{‘name’;james’, ‘age’:25}]以name对应的值进行排序

答:

infors = [{'name': 'qian', 'age': 28}, {'name': 'amy', 'age': 20}, {'name': 'james', 'age': 25}]
print(sorted(infors, key=lambda x: x['name']))

想学习更多关于python的文章,欢迎专注我们的公众号奥~

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值