python基础核心语法-函数进阶

今天给大家介绍python基础核心语法中的函数进阶部分,讲两个 一个是匿名函数,一个是高阶函数(主要是python的内置高阶函数大家会用即可)

一、匿名函数

"""
匿名函数lambda:没有名字的函数
语法:lambda 参数列表:运算表达式
"""

# 这是正常函数定义和调用
def fn(x):
    return x * x
# fn(5)
print(fn(5))

#匿名函数的语法:lambda 参数列表:运算表达式
# 匿名函数单个参数x
lambda x: x * x
# 调用匿名函数
f = lambda x:x*x
print(f(5))
# 匿名函数多个参数x,y,z
h = lambda x,y,z:x*y*z
print(h(1,2,3))

lambda并不会带来程序的运行效率提高,只会使得代码更加简洁

如果使用lambda,lambda内部不要有循环,可读性不好

lambda只是为了减少单行函数的定义而存在,如果一个函数只有一个返回值,只有一句代码,可以使用lambda

二、高阶函数

“”"
高阶函数:1、函数可以作为参数 2、函数可以作为返回值
高阶函数内置函数简介:就是把函数作为参数传入
作用:简洁代码,增加代码灵活性
“”"

一些内置函数:

# 求绝对值abs
print("python内置abs求绝对值",abs(-1))
# 求和sum()
print("python内置sum求和",sum([1,2,3,4,4]))
# 四舍五入 round()  python中这个函数的精度有问题
print("python内置round求四舍五入",round(8.9))

# 对任意两个数字,对这两个数字求绝对值后进行求和
func1 = lambda x,y:abs(x)+abs(y)
print(func1(-1,0))
# 灵活一点的高阶用法:把函数作为参数
func2 = lambda x,y,func:func(x)+func(y)
print(func2(-1,0,abs))

python内置的高阶函数

map(func,seq)

"""
python内置高阶函数
"""

"""
1、map(func,seq)
第一个参数是函数,第2个参数是序列。
map会直接用函数操作序列中的每一个元素
map函数返回值是一个迭代器
"""
# 将list1学列中每个元素加1
list1 = [1,2,3,4,5]
# 普通用法:循环遍历列表然后操作
# 此处不举例子了
# 高阶用法:用map直接操作list1中每一个元素,即map函数第一个参数func是给元素+1,这个函数比较简单我们就可以用上面提到的匿名函数直接定义,map函数的第二个参数是要操作的序列list1
res_map = map(lambda x:x+1,list1)
print("高阶用法map函数",res_map,list(res_map))#map函数返回值是一个迭代器,我们用list(res_map)接收一下

迭代器的介绍在上一篇文章:python生成器与迭代器

总结map:

1、map函数就是用函数操作序列中每一个元素,并返回一个迭代器
2、匿名函数lambda表达式可以结合像map这样的高阶内置函数,使得代码更加的简洁

filter(func,seq)

"""
2、filter(func,seq)
第一个参数是函数,第2个参数是序列
filter是过滤掉序列中不符合函数条件的元素
返回的也是迭代器
"""
# 保留序列中所有的偶数
list2 = [2,4,5,6,7]

res_filter = filter(lambda x:x%2==0,list2)
print("高阶用法filter函数",res_filter,list(res_filter))

sorted(seq,key=func)

""" 
3、sorted(seq,key = func)
第一个参数是要排序的序列,key=是函数
返回排序后的序列
高阶用法可以对序列自定义排序
"""
#把下面的列表用分数排序
list3 = ["zx:23","辣条:34","油条:2"]
res_sorted = sorted(list3,key=lambda x:int(x.split(":")[1]),reverse=True)
print("高阶用法sorted函数",res_sorted)

上面用分数排序用到了字符串切片方法,之前的文章也有介绍,可戳python字符串

max()\min()

"""
4、max(可迭代对象,key = 函数):根据函数获取可迭代函数的最大值
min(可迭代对象,key = 函数):根据函数获取可迭代函数的最小值
"""
res_max = max(list3,key = lambda x:int(x.split(":")[1]))
print("高阶max用法",res_max)

递归函数

此处只是在基础阶段简单介绍下递归是个啥玩意儿,后续到高阶合集还会详细介绍递归的,喜欢可以评论期待一下哦,三斤子会更加有动力续写~~

"""
递归函数:函数内部调用函数自己

要注意规避递归错误:定义递归函数必须有出口,且条件不断像出口靠近,即不能让它一直循环调用自己

"""
# 阶乘
def func_jiecheng(n):
    if n==0:# 这就是函数出口
        return 1
    # print(n)
    # return func_jiecheng(n*(n-1))
    return n * func_jiecheng(n-1) # 如果n不等于0就调用函数func_jiecheng自己
    
print(func_jiecheng(9))

你可能感兴趣的:(#,python核心基础语法,python,python)