函数的返回值
return
- return语句后面一定要有参数
- 如果函数没有写return语句,系统会默认添加一个return None
- return后面要是没值,系统会自动添加一个None
- return可以有多个返回值,多个数据用逗号隔开,本质上封装成了一个元组
- return可以返回一个容器类型数据(容器可以封装多个数据)
- return后面可以书写一个表达式,函数的调用,返回一个值
函数的全局变量global,和局部变量nonlocal
- 注意函数不能对全局变量进行增强运算操作(a=a+1,a+=1)
- 内部函数不能对外部函数的局部变量进行增强运算操作(a=a+1,a+=1)
- 解决方案:利用global或nonlocal
函数的闭包条件
- 内部函数使用了外部函数的非全局变量(局部变量)
外部函数返回了内层函数的函数对象
def out(x):
def inside(y):
return x+y
return inside
lambda表达式(匿名函数)
如果只需使用一次,或临时使用的一个功能,使用lambda更加简单
f = lambda x,y:x+y
l = f(1,2)
print(l)
#3
高阶函数
filter(fun or None,iterable)
- 如果第一个参数为None,则返回可迭代对象中的非(False,0,空值)元素
- 第一个参数的返回值只返回True或False
def fun(x):
return x%2
print(list(filter(fun,[1,2,3,4,5,6,7,9])))
#[1, 3, 5, 7, 9]
map(fun,*iterables)
def fun(*x):
return x*3
print(list(map(fun,[1,2,3],[4,5,6,7,8,9])))
#[(1, 4, 1, 4, 1, 4), (2, 5, 2, 5, 2, 5), (3, 6, 3, 6, 3, 6)]
#x*3表示重复的次数
reduce(fun,sequence[ initial ])
- fun 函数
- sequence 序列
- initial 初始值(如果给了初始值则先计算初始值)
import functools
def fun(x,y):
return x+y
print(functools.reduce(fun,[1,2,3,4,5,6]))
#21
print(functools.reduce(fun,[1,2,3,4,5,6],3))
#24