函数的返回值
当两个函数之间,想要互相使用到内部变量时,就可以应用到函数的返回值。
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的文章,欢迎专注我们的公众号奥~