• 【python笔记】第九节 函数进阶


    💕💕💕 博主昵称:摆烂阳💕💕💕

    🥰博主主页跳转链接
    👩‍💻博主研究方向:web渗透测试 、python编程
    📃 博主寄语:希望本篇文章能给大家带来帮助,有不足的地方,希望友友们给予指导

    ————————————————

    在这里插入图片描述

    一、函数进阶

    1、高级用法

    1.函数可以被引用(可以赋值)

    def fn():
        print("我是fn")
    
    
    f = fn  # fn 函数本身
    f()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.函数可以作为参数传入另外一个函数

    def fn():
        print("我是fn")
        
    def fn2(x): # x = fn
        x()  # fn()
        
    fn2(fn)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.可以将函数作为返回值

    
    
    def fn():
        print("我是fn")
    
    
    def fn2(x):
        return x  # return 可以返回任意类型,可以返回一个函数
    
    
    a = fn2(fn)
    
    a()  # fn()
    a()  # fn()
    a()  # fn()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    4.函数可以作为容器的元素

    def fn():
        return 10
    def fn2():
        print("hello")
    lis = [1, 3, 2, fn(), fn2] 
    print(lis[3])
    f = lis[4]
    f()  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    二、匿名函数(lambda)

    lambda函数的语法只包含一个语句,如下

    lambda 参数列表:运算表达式
    
    
    # def fn(x):
    #     return x * x
    
    # 匿名写法
    f = lambda x:x*x
    print(f(5))
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    总结:

    1.lambda并不会带来程序运行效率的提高,只会使代码更简洁
    2.如果使用lambda,lambda内不要循环,请使用标准函数来完成。目的是为了代码有可重用性和可读性
    3.lambda只是为了减少单行函数的定义而存在

    三、高阶函数

    1、高阶函数简介

    map,filter,sorted
    作用:

    map:修改序列
    filter:过滤序列
    sorted:排序序列

    func写法
    形参:都一样,表示每个元素

      return
    		map:return表示修改结果
        	filter:return表示过滤结果
            sorted:return表示排序目标
    
    • 1
    • 2
    • 3
    • 4

    高阶函数:函数作为参数的函数

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    python常用3个高阶内置函数

    map、filter、sorted

    2、map()

    map(func,seq) : 将传入的函数变量func作用到序列变量的每一个元素中,并将组成新的迭代器返回

    map(func,seq)
    - seq 就是要改的序列
    - func 要传入的函数
    
    
    • 1
    • 2
    • 3
    • 4
    # 将list1序列中各个数字加一
    list1 = [1, 2, 3, 4, 5]
    
    print(list(map(lambda x:x+1,list1)))
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    总结:

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    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)))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    4、sorted()

    list1 = [2, 4, 1, 3, 5, 6, 9, 7]
    升序

    print(sorted(list1))
    
    • 1

    **降序

    print(sorted(**list1,reverse=True))
    
    
    list1 = ["aa:69", "bb:79", "cc:100", "dd:55"]
    
    • 1
    • 2
    • 3
    • 4

    将分数升序排序

    def f(x):  # x代表每一个值,和map filter一样的
        return int(x.split(":")[1])  # 返回要排序的值
    
    print(sorted(list1, key=f,reverse=True))
    
    • 1
    • 2
    • 3
    • 4

    本章小结

    总结:
    学了今天这3个高阶函数以后,可以更加灵活的去 修改(map)序列。过滤(filter)序列。排序(sorted)

    本文是本人以前笔记,博主主页跳转链接如果有哪里不对的话欢迎各位大佬指出问题,本人也是初学python,希望可以和各位朋友一起学习进步。

    点击跳转到博主python专栏:
    如果有喜欢web安全的朋友,请在web渗透专栏中进行查看,点击跳转到博主web渗透专栏

  • 相关阅读:
    MySQL之基础语句
    浏览器不能访问阿里云ECS
    MySQL数据库基础理论、部署与使用
    Cannon.js -- 3d物理引擎
    nltk报错punkt 缺失 Error Loading Error11004
    阿里云天池大赛赛题(机器学习)——天猫用户重复购买预测(完整代码)
    SAP MDG —— MDG on S/4HANA 2022 创新汇总(Central Governance)
    软件调试技术概览
    普冉PY32系列(八) GPIO模拟和硬件SPI方式驱动无线收发芯片XN297LBW
    每日刷题记录 (三十)
  • 原文地址:https://blog.csdn.net/qinshuoyang1/article/details/126475467