• Python学习 10day__高级语法


    filter函数

      过滤函数:对一组数据进行过滤,符合条件的数据会生成一个新的列表并返回


    1 # 对一个列表进行过滤,偶数组成一个新列表
    2 
    3 def isEcen(a):
    4     return a % 2 == 0
    5 
    6 l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    7 r = filter(isEcen, l)
    8 print(type(r))                    # 类型为filter类型 可迭代 用for进行输出
    9 print([i for i in r])

    高阶函数 排序

      把一个列表按照给定算法进行排序

    1 a = [99, 4564, 45646 ,465346 ,213 ,4864 ,1231, 784351]
    2 a1 = sorted(a)                  # 从小到大
    3 print(a1)
    4 a2 = sorted(a, reverse=True)    # 从大到小
    5 print(a2)
    6 
    7 a = [846, -45, 4563453, -5644, 453]
    8 al = sorted(a, key=abs, reverse=True)       # abs为取绝对值;绝对值倒叙排序
    9 print(al)

    返回函数

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


     1 def a1(a):
     2     print("a1")
     3     return None
     4 p = a1(3)
     5 print(a)
     6 
     7 def a2():
     8     def a3():
     9         print("a3")
    10         return 3
    11     return a3                # 函数a3作为返回值
    12 
    13 pp = a2()
    14 print(pp)
    15 print(pp())
    
    
     1 def a4(*args):
     2     def a5():
     3         i = 0
     4         for n in args:   # a5使用了外部a4的变量
     5             i += n
     6         return i
     7     return a5            # 返回内部函数a5
     8 
     9 ppp = a4(1, 2, 3, 4, 5, 6, 7)
    10 print(ppp())

    闭包

      当一个函数在内部定义函数,并在内部的函数中应用外部函数的参数或者局部变量
      当内部函数作为返回值的时候,相关参数和变量保存在返回的函数中,这种结构叫做闭包


     1 def count():
     2     fs = []
     3     for i in range(1, 4):
     4         def f():
     5             return i * i
     6         fs.append(f)
     7     return fs
     8 f1, f2, f3 = count()
     9 print(f1())
    10 print(f2())
    11 print(f3())
    12 '''
    13 输出结果为三个9,造成这种情况的原因是返回函数引用了i,i并非立即执行,二十等到三个
    14 函数都返回的时候才执行,而这个时候i已经变成了3,最终调用的时候都返回的是3*3
    15 因此,返回函数不能引用任何循环变量
    16 '''

    解决方法
    def count2():
        def f(j):
            def g():
                return j * j
            return g           # 返回值为内部函数
        fs = []
        for i in range(1, 4):
            fs.append(f(i))
        return fs
    
    b1, b2, b3 = count2()
    print(b1())
    print(b2())
    print(b3())


    装饰器

      在不改变原有代码的基础上附加功能
      可以装饰任何函数

     1 import time
     2 def ptime(f):
     3     def wrapper(*args, **kwargs):
     4         print("time: ",time.ctime())
     5         return f(*args, **kwargs)
     6     return wrapper
     7 
     8 @ptime                       # 装饰器,语法@+新功能函数 此处相当于hello()=ptime(hello())
     9 def hello():
    10     print("hello world")
    11 
    12 hello()

    偏函数

      参数固定的函数,相当于一个有特定参数的函数体
      functools.partial的作用,把一个函数的某些参数固定,返回一个新函数

    1 #把字符串转换为十进制数
    2 print(int('123456'))
    3 # 把八进制转换为十进制
    4 print(int('123456',base=8))
    用偏函数固定参数,实现上面的八进制转换为十进制

    1 import functools
    2 
    3 int8 = functools.partial(int, base=8)
    4 print(int8('123456'))
  • 相关阅读:
    ab 性能测试工具的使用(Web并发测试)
    java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)
    java 判断两个时间相差的天数
    java 正则表达式的应用:读取文件,获取其中的电话号码
    mybatis 插入数据时返回主键
    CodeForces 493B Vasya and Wrestling 【模拟】
    图像边缘检測小结
    【JS设计模式】温习简单工厂模式、工厂方法模式、抽象工厂模式概念
    60.自己定义View练习(五)高仿小米时钟
    bzoj4361 isn
  • 原文地址:https://www.cnblogs.com/Burtit/p/9383854.html
Copyright © 2020-2023  润新知