• python --内置函数


    一、内置函数
     
    内置函数的思维导图
     
    1、print(self,*args,sep=' ',end=' ',file=None)
    print('张颖', '张娜', '张梦', '张悦', end = ' ')   # 以什么为结尾,默认是回车
    # 张颖 张娜 张梦 张悦
    
    print('张颖', '张娜', '张梦', '张悦', sep = '_')  #  连接符,默认是空格
    # 张颖_张娜_张梦_张悦

    2、hash()  数字算出来就是数字本身,其他的数据类型算完依托很长的数字 

    print (hash(12345)) # 12345
    print(hash('你是谁')) # 1399596852175174770
    3、id()  查看内存地址
    4、help()   # 查看帮助
    5、callable()  查看函数是否能够调用
    def func():
        print('as')
    
    an = ''
    
    print(callable(func)) # True
    print(callable(an)) # False
    6、dir()  此类型的数据可以执行哪些方法(函数)
    7、count()  计数
    8、bin()  转化成二进制   oct()   转化成八进制   hex()  转化成十六进制    
    9、divmod()   计算商和余数   
    10、round()   如果是奇数,正常四舍五入,若是偶数 会五舍六入
    11、pow()  # pow(4,4) 4 的4 次方
    12、 enumerate()   列出可迭代的索引和元素
    lis = ['中国','美国','日本']
    # for i in range(lis):
    #      print(i,lis[i])
    
    # enumerate(iterable[, start]) -> iterator for index, value of iterable
    for i, el in enumerate(lis,1):
            print(i,el)

    13、all()  any()    

    print(all([1, 3, 5, 'ha'])) # and
    
    print(any([1, False, None])) # or

    14、zip()   # 拉链函数  水桶效应 

    lst1 = ["赵四", "刘能", "香秀"]
    lst2 = ["刘晓光", "王小利"] # 水桶效应
    lst3 = ["街舞", "磕巴", ""]
    z = zip(lst1, lst2, lst3)
    print(list(z))
    
    #[('赵四', '刘晓光', '街舞'), ('刘能', '王小利', '磕巴')]
    15、iter()   获取迭代器,内部使用的是__iter__()方法来获取迭代器
           next()  迭代器函数  迭代器向下执行一次,内部实际使用了__next__()方法返回迭代器的下一个项目
     
    二、匿名函数
    匿名函数的统一的名字:<lambda>
    fn = lambda a, b: a+b
    fn = fn(3, 4)
    print(fn)
    使用场景:配合着sorted,map,filter
     
    1、sorted() 排序函数,
        语法:sorted(Iterable,key=None,reverse=False)
     
       Iterable :可迭代对象
       key:排序规则(排序函数),在sorted内部会将可迭代对象中的每一个元素传递给这个        函数的参数,根据函数运算的结果进行排序
     
        reverse:是否倒叙,True:倒叙,False:正序
     
    自己去定义排序的规则
    lst = [34,56,78,32,12,34,90]
    print(sorted(lst))
    # 按名字长度排序
    names = ['张颖一','','关谷神奇','阿苏','慕容东方晓']
    
    def func(s):
        return len(s) # 返回长度
    # 执行流程
    # 把可迭代对象中的每一项拿出来,作为参数传递给后面的key函数
    # 函数返回数字,根据数字进行排序
    s = sorted(names,key=func)
    print(s)
    
    # ['影', '阿苏', '张颖一', '关谷神奇', '慕容东方晓']
    
    # 另一种方法
    print(sorted(names,key=lambda s : len(s)))
    2、filter  过滤函数
    语法:filter(function,Iterable)
        function:用来筛选的函数,在filter中会自动把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据
        Iterable:可迭代对象
    names = ['张颖一','张影','关谷神奇','阿苏','慕容东方晓']
    # 过滤掉姓张的人
    # 把可迭代对象打开,把内部元素一个一个的传递给前面的函数,由这个函数决定此项是否保留
    f = filter(lambda name : not name.startswith(''),names)
    print("__iter__" in dir(f)) # 可迭代对象
    for el in f:
        print(el)
    3、map 映射函数
    语法:map(function,iterable)可以对可迭代对象中的每一个元素进行映射,分别去执行function
    def func(e):
        return e ** 2
    
    lst = [2,45,67,32,6]
    
    mp = map(func,lst)
    print(mp)
    print(list(mp))
    
    # 用lambda
    m = map(lambda i : i **2 , lst)
    print(list(m))
    # 计算两个列表中相同位置的和
    
    lst1 = [2,4,6,8,9]
    lst2 = [1,3,5,7,10]
    m = map(lambda x,y : x + y,lst1,lst2)
    print(list(m))

    4、eval()   执行字符串类型的代码,并返回最终结果

    print(eval("2+2")) # 4
    n = 8
    print(eval("2+n")) # 10
    
    def func():
        print(666)
    eval("func()") # 666

    5、exec() 执行字符串类型的代码

    exec('''
    for i in range(10):
        print(i)
    ''')
    6、compile() 将字符串类型的代码编译,代码对象能够通过exec语句来执行或者eval()进行求职
    参数说明:
        1、resource 要执行的代码,动态代码片段
        2、文件名,代码存在的文件名,当传入第一个的参数的时候,这个参数给空就可以了
        3、模式,取值3个,
            1、exec:一般放一些流程语句的时候
            2、eval:resource只存放一个求值表达式
            3、single:resource存放的代码由交互的时候,mode应该为single
    code1 = "for i in range(10):print(i)"
    c1 = compile(code1,"",mode="exec")
    exec(c1)
    
    code2 = "1+4+8"
    c2 = compile(code2,"", mode="eval")
    a = eval(c2)
    print(a)
    
    code3 = "name = input('请输入你的名字:')"
    c3 = compile(code3,"", mode="single")
    exec(c3)
    print(exec(c3))

    有返回值的字符串形式的代码用eval(),没有返回值的字符串形式的代码用exec(),一般很少用到compile() 

  • 相关阅读:
    19-10-31-B
    19-10-30-Night-V
    19-10-30-C
    19-10-29-Night-X
    19-10-29-Z
    19-10-28-A
    19-10-27-S
    19-10-26-Night-D
    留言板
    优秀博客存档
  • 原文地址:https://www.cnblogs.com/1915823-huxt/p/10111268.html
Copyright © 2020-2023  润新知