💕💕💕 博主昵称:摆烂阳💕💕💕
🥰博主主页跳转链接
👩💻博主研究方向:web渗透测试 、python编程
📃 博主寄语:希望本篇文章能给大家带来帮助,有不足的地方,希望友友们给予指导
————————————————
一、函数进阶
1、高级用法
1.函数可以被引用(可以赋值)
def fn():
print("我是fn")
f = fn # fn 函数本身
f()
2.函数可以作为参数传入另外一个函数
def fn():
print("我是fn")
def fn2(x): # x = fn
x() # fn()
fn2(fn)
3.可以将函数作为返回值
def fn():
print("我是fn")
def fn2(x):
return x # return 可以返回任意类型,可以返回一个函数
a = fn2(fn)
a() # fn()
a() # fn()
a() # fn()
4.函数可以作为容器的元素
def fn():
return 10
def fn2():
print("hello")
lis = [1, 3, 2, fn(), fn2]
print(lis[3])
f = lis[4]
f()
二、匿名函数(lambda)
lambda函数的语法只包含一个语句,如下
lambda 参数列表:运算表达式
# def fn(x):
# return x * x
# 匿名写法
f = lambda x:x*x
print(f(5))
总结:
1.lambda并不会带来程序运行效率的提高,只会使代码更简洁
2.如果使用lambda,lambda内不要循环,请使用标准函数来完成。目的是为了代码有可重用性和可读性
3.lambda只是为了减少单行函数的定义而存在
三、高阶函数
1、高阶函数简介
map,filter,sorted
作用:
map:修改序列
filter:过滤序列
sorted:排序序列
func写法
形参:都一样,表示每个元素
return
map:return表示修改结果
filter:return表示过滤结果
sorted:return表示排序目标
高阶函数:函数作为参数的函数
abs() : 返回数字的绝对值
round() : 作用是四舍五入
偶数开头,小数大于五入
奇数开头,小数五入
任意两个数字,对2个数字求绝对值后进行求和
# 任意两个数字,对2个数字求四舍五入后进行求和
def ab_sum(a, b, f):
return f(a) + f(b)
result = ab_sum(-1, -4.5, abs) # 求2个数绝对值的和
print(result)
result = ab_sum(-1, -4.5, round) # 求2个数四舍五入的和
print(result)
python常用3个高阶内置函数
map、filter、sorted
2、map()
map(func,seq) : 将传入的函数变量func作用到序列变量的每一个元素中,并将组成新的迭代器返回
map(func,seq)
- seq 就是要改的序列
- func 要传入的函数
# 将list1序列中各个数字加一
list1 = [1, 2, 3, 4, 5]
print(list(map(lambda x:x+1,list1)))
总结:
1.map高阶内置函数作用是操作序列中的所有元素,并返回一个迭代器,迭代器要转回列表
2.lambda表示可以专门配合高阶内置函数来做简单实现
3、filter()
fillter(func,seq) : 过滤序列类型,过滤掉不符合条件的元素,结果也是迭代器,要通过list转换
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
求序列中所有的偶数
# 老做法
# list2 = []
# for i in list1:
# if i % 2 == 0:
# list2.append(i)
# print(list2)
def func(x): # 这个x就代表每个元素,和map一样
# 返回值是一个布尔值,如果为真,则保留,否则过滤
return x % 2 == 0
print(list(filter(func, list1)))
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list(filter(lambda x:x%2==0, list1)))
4、sorted()
list1 = [2, 4, 1, 3, 5, 6, 9, 7]
升序
print(sorted(list1))
**降序
print(sorted(**list1,reverse=True))
list1 = ["aa:69", "bb:79", "cc:100", "dd:55"]
将分数升序排序
def f(x): # x代表每一个值,和map filter一样的
return int(x.split(":")[1]) # 返回要排序的值
print(sorted(list1, key=f,reverse=True))
本章小结
总结:
学了今天这3个高阶函数以后,可以更加灵活的去 修改(map)序列。过滤(filter)序列。排序(sorted)
本文是本人以前笔记,博主主页跳转链接如果有哪里不对的话欢迎各位大佬指出问题,本人也是初学python,希望可以和各位朋友一起学习进步。
点击跳转到博主python专栏:
如果有喜欢web安全的朋友,请在web渗透专栏中进行查看,点击跳转到博主web渗透专栏