zoukankan      html  css  js  c++  java
  • 匿名函数、内置函数

    1  匿名函数

    2  内置函数


     6.17 匿名函数

    # 匿名就是没有名字
    def func(x,y,z=1):
        return x+y+z
    
    # 匿名
    lambda x,y,z=1:x+y+z  #与函数有相同的作用域,但是匿名意味着引用计数为0,使用一次就释放,除非让其有名字
    func=lambda x,y,z=1:x+y+z
    func(1,2,3)
    #让其有名字就没有意义
    #有名函数与匿名函数的对比:
    有名函数:循环使用,保存了名字,通过名字就可以重复引用函数功能
    匿名函数:一次性使用,随时随时定义
    应用:max,min,sorted,map,reduce,filter

    6.18 内置函数

    更多内置函数:https://docs.python.org/3/library/functions.html?highlight=built#ascii 

     

    # zip 拉链函数
    l1=[1,2,3]
    s1='hello'
    res=zip(l1,s1) #合并多个可迭代对象成元组
    print(list(res)) #迭代器可以用list和next来查看
    [(1, 'h'), (2, 'e'), (3, 'l')]
    
    res=zip(salaries.values(),salaries.keys()) #把values放在前面 max会取values的最大值
    print(max(res)[1])
    # max 
    salaries={
    'egon':3000,
    'alex':100000000,
    'wupeiqi':10000,
    'yuanhao':2000
    }
    def f1(k):
        return salaries[k]
    print(max(salaries,key=lambda k:salaries[k])) #key后面指定一个功能 迭代出的结果传给key
    print(min(salaries,key=lambda k:salaries[k]))
    # sorted
    print(sorted(salaries,key=lambda k:salaries[k]))
    print(sorted(salaries,key=lambda k:salaries[k],reverse=True)) #反序
    #map
    l=['alex','wupeiqi','yuanhao','huanghongwei']
    print(list(map(lambda x:x+'_SB',l))) #映射函数 功能放第一位置
    #reduce
    from functools import reduce
    print(reduce(lambda x,y:x+y,range(1,101),100)) #合并函数 最后为初始值 5150
    #filter
    l=['alex_SB','wupeiqi_SB','yuuanhao_SB','hhw','egon']
    res=filter(lambda name:name.endswith('SB'),l) #过滤函数
    print(list(res))
    # 优先掌握
    max  #最大
    min  #最小
    sorted  #排序
    map  #映射
    from _functools import reduce  #合并
    filter  #过滤
    sum  #总和
    bool  #布尔 布尔值为假:0,None,空
    chr  #转ascii
    divmod  #显示商和余数的一个元组
    enumerate  #索引+值
    id   #id优先看内存地址
    input  #输入
    print  #打印
    isinstance  #是否是某类型
    iter  #迭代对象
    len   #长度 
    open  #文件打开
    pow   #先幂次方后取余
    type  #类型
    zip   #拉链函数
    dict,int,list,tuple,str,float,set,frozenset,complex  #数据类型
    #面向对象
    classmethod 
    staticmethod 
    property 
    getattr 
    hasattr 
    setattr 
    delattr 
    super 
    isinstance 
    issubclass 
    object.__dict__ 
    #其他内置函数
    #abs
    print(abs(-1)) #求绝对值
    #all
    print(all([1,'a',[]])) #返回迭代对象的所有值都是True则返回True 可迭代对象为空也是True
    print(all([])) #可迭代对象为空也是True
    # any
    print(any([0,None,'',1])) #True 只要1个为真 就返回True 和all相对
    print(any([])) #False 和all相反 
    #bin , oct , hex
    print(bin(10)) #十进制转二进制 0b1010
    print(oct(10)) #十进制转八进制 0o12
    print(hex(10)) #十进制转十六进制 0xa
    #布尔值为假:0,None,空
    bool()
    #bytes
    print('hello'.encode('utf-8'))
    print(bytes('hello',encoding='utf-8')) #字节串
    #callable
    print(callable(max)) #判断是否被调用
    #chr , ord
    print(chr(65)) #按ascii 把数字转字符
    print(ord('A')) #字符转数字
    #complex复数
    x=1-2j  #x=complex(1-2j)
    print(type(x))
    print(x.real) #实部
    print(x.imag) #虚部
    #数据类型: dict,int,list,tuple,str,float,set,frozenset,complex
    s=set({1,2,3}) #可变集合
    s=frozenset({1,2,3}) #不可变集合
    #dir
    import time
    print(dir(time)) #列出time的属性
    #divmod
    print(divmod(1001,25)) #(40,1) 相除显示商和余数
    #enumerate
    l=['a','b','c','d']
    for x in enumerate(l): #元组(索引,值)
    print(x)
    #hash
    print(hash('asdfasdfasdfasdfasdf')) #哈希
    print(hash(' asdfasdfasdfasdfasdf'))
    #help
    def func():
    '''
    xxxxxx
    :return:
    '''
    pass
    print(help(func))
    #isinstance
    print(isinstance(1,int))
    print(type(1) is int)
    #pow
    print(pow(10,2,3)) #10**2%3 幂次方后取余
    #str
    print(str({'a':1})) #转换为字符串类型 repr一般不用
    #reversed
    l=[1,4,2,9]
    print(list(reversed(l))) #反转
    #round
    print(round(10.55545,3)) #保留3位小数点,四舍五入
    #slice
    l1=['a','b','c','d','e']
    l2=['a','b','c','d','e']
    print(l1[1:5:2]) #'b','d' 
    print(l2[1:5:2]) #'b','d'
    obj=slice(1,5,2) #切片可以重用 基本不用
    print(l1[obj])
    print(l2[obj])
    #sum
    print(sum([1,2,3,4])) #后面是可迭代对象
    print(sum(range(10)))
    #vars
    print(vars() is locals()) 
    #vars(obj) 等同于obj.__dict__
    x=111111111111111111111111111111111111111
    print(locals()) #只是绑定关系
    #import , __import_
    import "time" #import 不能导入字符串
    
    m=input('>>: ')
    print(type(m))
    obj=__import__(m) #导入的是字符串
    obj.sleep(3)
    
    #了解:compile ,exec ,eval
    #eval:提取字符串内的表达式执行,然后返回执行结果
    # s1="1+2+3"
    s1="['a','b','c']"
    l=eval(s1)
    print(type(l)) #<class ‘list’>
    
    s2="for i in range(10):print(i)"
    eval(s2)
    
    #exec:仅仅只是执行字符串内的表达式或语句,没有返回值
    s1="1+2+3"
    print(exec(s1)) #None 没有返回值
    
    s2="for i in range(10):print(i)"
    exec(s2) #正常输出
    
    #compile(str,filename,kind)
    # filename:用于追踪str来自于哪个文件,如果不想追踪就可以不定义
    # kind可以是:single代表一条语句,exec代表一组语句,eval代表一个表达式
    s='for i in range(10):print(i)'
    code=compile(s,'','exec') #把s编译成可以exec执行的语句
    exec(code)
    
    s='1+2+3'
    code=compile(s,'','eval')
    eval(code)
  • 相关阅读:
    python 全栈开发,Day21(抽象类,接口类,多态,鸭子类型)
    python 全栈开发,Day20(object类,继承与派生,super方法,钻石继承)
    python 全栈开发,Day19(组合,组合实例,初识面向对象小结,初识继承)
    python 全栈开发,Day18(对象之间的交互,类命名空间与对象,实例的命名空间,类的组合用法)
    python 全栈开发,Day17(初识面向对象)
    python 全栈开发,Day16(函数第一次考试)
    python 全栈开发,Day15(递归函数,二分查找法)
    python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)
    python 全栈开发,Day13(迭代器,生成器)
    python 全栈开发,Day12(函数的有用信息,带参数的装饰器,多个装饰器装饰一个函数)
  • 原文地址:https://www.cnblogs.com/snailgirl/p/8125046.html
Copyright © 2011-2022 走看看