zoukankan      html  css  js  c++  java
  • Python连载17-排序函数&返回函数的函数

    一、高阶函数-排序

    1.定义:把一个序列按照给定算法进行排序

    2.key:在排序前对每一个元素进行key函数运算,可以理解成按照key函数定义的逻辑进行排序

    3.python2和python3相差巨大

    #help(sorted)
    
    #排序案例1
    
    a = [526,6,5565,323,596,265,6256]
    
    #升序输出
    
    al = sorted(a)
    
    #降序输出
    
    ap = sorted(a,reverse=True)
    
    print(al)
    
    print(ap)
    
    ​
    
    #排序案例2
    
    b = [514,56,25,526,-54,-54156,4,54,-415]
    
    #按照绝对值排序
    
    #abs是求绝对值的意思
    
    a1 = sorted(b,key=abs,reverse=True)
    
    print(a1)
    
    ​
    
    #sorted案例
    
    astr = ['dana','Dana','youxiu','asdhj']
    
    a2 = sorted(astr)
    
    print(a2)
    
    a3 = sorted(astr,key=str.lower)
    
    print(a3)

    二、返回函数

    1.函数也可以返回具体的值;也可以返回一个函数作为结果

    2.我们接下来举例,只举第二段话的例子

    def myF2():
    
        def myF3():
    
            print("再试一下结果")
    
            return 3
    
        return myF3
    
    f3 = myF2()
    
    print(type(f3))
    
    print(f3)
    
    print("------分割线------")
    
    print(f3())

    从返回值里面看出反回了一个类函数,然后我们运行了这个函数。

    三、负责一点的返回函数的例子args:参数列表

    ​注:(1)myF4定义了函数,返回内部函数定义的myF5;(2)myF5定义了外部变量,这个变量是myF4的参数

    def myF4(*args):
    
    #*args中的星号是让Python创建一个名为args的空元组
    
        def myF5():
    
            rst = 0
    
            for n in args:
    
                rst += n
    
            return rst
    
        return myF5
    
    f5 = myF4(2,8,54,652,6526,6)
    
    print(f5())

    对比一下

    def myF6(*args):
    
        rst = 0
    
        for n in args:
    
            rst += n
    
        return rst
    
    f6 = myF6(2,8,54,652,6526,6)
    
    print(f6)
    
     

    ​总结:其实这个和上面函数得数一样,但是下面更好理解一些,这里就是为了做一个能够返回函数的演示,而且最本质的区别在于,一个是返回函数一个是返回值。

    之所以要更复杂,是因为在企业的开发中返回函数更具有安全性要求,我们对函数可以进行加密​。​

    四、源码:

    d20_1_sorted_function&return_function_of_function

    地址:https://github.com/ruigege66/Python_learning/blob/master/d20_1_sorted_function%26return_function_of_function

    2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

    3.博客园:https://www.cnblogs.com/ruigege0000/

    4.欢迎关注微信公众号:傅里叶变换,后台回复”礼包“,获取大数据学习资料。

  • 相关阅读:
    python 一个二维数组和一个整数,判断数组中是否含有该整数
    DDD 全称 “Domain-Driven Design”,领域驱动设计
    pytest + allure 生成测试报告
    AttributeError: module 'pytest' has no attribute 'allure'
    BDD的概念
    在im4java中使用GraphicsMagick
    缓存穿透与缓存雪崩
    Linux安装ImageMagick与JMagick完成过程及配置
    Windows/Linux下引用jar包,并用javac/java编译运行
    在CentOS4上安装JMagick
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/11100500.html
Copyright © 2011-2022 走看看