zoukankan      html  css  js  c++  java
  • 内置函数(二) 闭包

    内置函数(二)

    内置函数

    1.abs( ) 
    print([abs(i) for i in lst])
    # 绝对值 -- 返回的都是正数
    
    2.enumerate( )
    [(0,1)(1,2)(2,3)]
    print([i for i in enumerate(lst,10)])
    # 枚举("可迭代对象","序号的起始值") 默认的起始值是 0 
    
    3.max( ) 
    print(max([1,2,3,4,56,7,8]))
    # 求最大值
    print(max([1,2,-33,4,5],key=abs))
    # key指定查找最大值的规则
    
    4.min( )
    print(min([1,2,3,4,-56,7,8]))
    # 求最小值
    
    5.sum( )
    print(sum([1,2,3,4,5],100))
    # 求和
    
    6.
    python3 中:
    range( )
    g = range(0,10)
    g.__iter__()
    # 范围 本身是一个可迭代对象 有__iter__()方法
    python2 中:
    range( )
    # 获取的是一个列表
    Xrange( )
    # 获取的是一个可迭代对象
    
    7.open( )
    # 文件操作
    
    8.print( )
    print(sep=" ",end="
    " )
    print(1,2,3,sep="  ")
    # sep是多个元素的连接符
    
    9.len( )
    # 公共方法,求长度的函数(除数字和bool值)
    
    10.list( )
    # 列表
    11.dict( )
    print(dict((1,2),(2,3)(3,4)))
    print(dict([i for i in enumerate(range(20),1)]))
    # 字典
    
    12.zip( )
    lst = [1,2,3,4,5]
    lst1 = ["a","b","c","d","f","e"]
    print(dict(list(zip(lst,lst1))))
    # 拉链 -- 按照最少的进行合并
    
    13.dir( )
    print(dir(list))
    # 查看当前函数的方法
    

    匿名函数

    f = lambda x,y:(x,y)
    print(f(1,2))
    print(f.__name__)
    
    print((lambda x:x)(2)) # 同一行定义 同一行调用
    
    lambda  # 关键字 -- 定义函数
    x,y    # 形参
    :x+y   # 返回值 -- 只能返回一个数据类型
        
    示例:
    lst = [lambda i:i*i for i in range(10)]
    print(lst[2](2))
    # 4
    # 拆解
    lst = []
    for i in range(10):
        def func(i):
            return i*i
        lst.append(func)
    print(lst[2](2))
    
    示例2:
    lst = [lambda :i*i for i in range(10)]
    print(lst[2]())
    # 81
    # 拆解
    lst = []
    for i in range(10):
        def func():
            return i*i
        lst.append(func)
    print(lst[2]())
    
    
    # 一行函数
    # 形参可以不写
    # 返回值必须要写,返回值只能返回一个数据类型
    

    内置函数(重要)

    1.format( )
    print(format(13,">20"))
    # 右对齐
    print(format(13,"<20"))
    # 左对齐
    print(format(13,"^20"))
    # 居中
    print(format(13,"08b"))    
    # 2进制
    print(format(13,"08d"))    
    # 10进制
    print(format(13,"08o"))   
    # 8进制
    print(format(12,"08x"))
    # 16进制
    
    2.filter( )
    # 过滤
    lst = [1,2,3,4,5,6]
    def func(s):
        return s > 3
    print(list(filter(func,lst)))
    # func就是自己定义一个过滤条件,lst 要迭代的对象
    
    lst = [1,2,3,4,5,6,7]
    print(list(filter(lambda x:x % 2 == 1,lst)))
    
    3.map( ) 
    print(list(map(lambda x:x*x,[1,2,3,8,4,5])))
    # 对象映射
    # 对可迭代对象中的每个元素进行加工
    
    4.reverse( )  
    reversed( )
    # 两者都是反转 前者在源数据上进行反转 后者开辟新空间进行反转,不影响源数据
    
    5.sort( )
    sorted( )
    # 两者都是排序 前者在源数据上进行排序 后者开辟新空间进行排序,不影响源数据
    
    lst = [1,23,34,4,5,213,123,41,12,32,1]
    print(sorted(lst))   
    print(lst)
    # 升序
    
    lst = [1,23,34,4,5,213,123,41,12,32,1]
    print(sorted(lst,reverse=True))  
    # 降序
    
    dic = {"key":1,"key1":2,"key3":56}
    print(sorted(dic,key=lambda x:dic[x],reverse=True))
    # 指定key的排序规则
    
    6.reduce( )
    from functools import reduce
    print(reduce(lambda x,y:x+y,[1,2,3,4,5]))
    # 累计算
    

    闭包

    def func():
        a = 1
        def f1():
            def foo():
                print(a)
            return foo
        return f1
    ret = func()       # 或者直接 func()()()
    a = ret()
    a()
    
    # 在嵌套函数内,使用非全局变量(且不是本层变量) -- 就是闭包
    # print(foo()()().__closure__)判断是否闭包
    
    了解:
    print(ret.__code__.co_freevars)
    # 获取的是自由变量
    print(ret.__code__.co_varnames)
    # 获取的是局部变量
    
    闭包的作用:
    1.保证数据的安全性
    2.装饰器
    
  • 相关阅读:
    黑马程序员——正则表达式
    黑马程序员——集合框架知识点总结
    黑马程序员——String类知识点详细
    黑马程序员——System、Runtime、Date、Calender、Math静态类
    黑马程序员——IO流总结
    黑马程序员——多线程中的安全问题 :
    获取一段字符串中含有某一子字符串的个数的方法定义:
    debian彻底删除apache2
    linux下mysql的安装
    markdown学习
  • 原文地址:https://www.cnblogs.com/beichen123/p/11247127.html
Copyright © 2011-2022 走看看