常用内置函数,匿名函数,递归函数

一, 匿名函数:没有名字的函数,lambda

  • 只能构建简单的函数,一句话函数

    def func(x, y):
        return x + y
    print(func(1, 2))
    
    func2 = lambda x, y: x + y   # lambda 定义一个匿名函数
    print(func2(1, 2))
    
    func4 = lambda a, b: a if a > b else b
    # 匿名函数最常用的就是与内置函数结合使用
    

二, 内置函数:python中内置的函数,有68种

  1. eval():剥去字符串的外衣,返回最终结果,要慎用

    s = '5 + 9'
    print(eval(s)) # 14
    
  2. exec():执行字符串中的代码流,没有返回值

    s = '''
    for i in [1,2,3]:
        print(i)
    '''
    exec(s)
    
  3. hash():获取一个对象(可哈希对象:int,str,bool,tuple)的哈希值

  4. help():查看函数或模块的详细说明

  5. callable():用于检查一个对象是否是可以调用的,如果返回True,仍然有可能调用失败,但是返回False,则一定不会成功

    name = '马倩'
    def func():
        pass
    print(callable(name))  # False
    print(callable(func))  # True
    
  6. int():用于将一个字符串或数字转换为整型

    print(int())  # 0
    print(int('12'))  # 12
    print(int(3.6))  # 3
    
  7. float():用于将整数和字符串转换成浮点数

  8. complex():用于创建复数,或者将字符串或数转换成复数

  9. bin():将十进制转换成二进制

  10. oct():将十进制转换成八进制字符串并返回

  11. hex():将十进制转换成十六进制字符串并返回

  12. divmod():计算除数与被除数的结果,返回一个包含商和余数的元组(a//b,a%b)

    print(divmod(10, 3))  # (3, 1)  分页用到
    
  13. round():保留浮点数的小数位数,默认保留整数

    print(round(3.1415926, 2)) # 3.14 四舍五入
    
  14. pow():求x**y次幂

    # 第三个参数为x**y的结果对z取余
    print(pow(2, 3))  # 2**3 8
    print(pow(2, 3, 3)) # 8对3取余 2
    
  15. ord():输入字符找该字符编码的位置,unicode

  16. chr():输入位置数字找出其对应的字符,unicode,有用

  17. repr():返回一个对象的string形式(原形毕露)

    print(repr('123')) # '123
    
  18. all():可迭代对象中全是True才是True

  19. any():可迭代对象中,有一个True就是True

  20. 接下来的都很重要!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  21. print():屏幕输出

    print(1, 2, 3, sep='_') # 1_2_3 sep设定分隔符,默认空格
    print(1, 2, end=' ') # end默认是\n
    
  22. list():定义或转换列表

    lst = list('asdfg') # 括号内放可迭代对象
    # ['a', 's', 'd', 'f', 'g']
    
  23. dic():字典

    字典的创建方式

    dic = {1: '2'}
    dic = [i: 1 for i in range(3)]
    dic = dict(one=1, two=2, three=3) # key不是能是int
    dic = dict.fromkeys(keys, value)  # value都相同
    
  24. abs():获取绝对值

    print(abs(-10))   # 10
    
  25. sum():求和

    # sum(iterable, 初始值默认为0)
    print(sum([1, 2, 3, 4])) # 10
    print(sum([1, 2, 3, 4], 10)) # 20
    
  26. max():求最大值 用法与min()完全相同

  27. min():求最小值

    print(min([22, 11, 45, 2]))   # 2
    # lst = [('maqian', 20), ('xihong', 18), ('xiaomi', 22)]
    # 找年龄最小的元组
    print(min(lst)) # ('maqian', 20),按照可迭代对象的第一个元素的第一个字符排序
    
    # 通过设置key去使用min(),key=函数名,返回值是什么就按照什么进行比较
    # min()会自动的将可迭代对象的每一个元素作为实参传给函数,最后将遍历的那个元素返回
    print(min(lst, key=lambda x: lst[1]))  # 使用匿名函数
    
  28. reversed():将一个可迭代对象翻转,返回翻转的迭代器

    s = 'maqian'
    for i in reversed(s):
    	print(i)  # n a i q a m
    
  29. bytes():编码

    s = '马倩'
    print(s.encode('utf-8'))  # 第一种方法
    print(bytes(s, encoding='utf-8') # 第二种方法
    
    # 编码
    b = b'\xe5\xb0\x8f\xe6\x98\x8e'
    print(b.decode('utf-8'))  # 第一种方法
    print(str(b, encoding='utf-8')) # 第二种方法
    
  30. zip():拉链方法,用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的内容(迭代器),如果个个可迭代对象的元素个数不一致,则按照长度最短的返回

    lst1 = [1,2,3]
    lst2 = ['a','b','c','d']
    lst3 = (11,12,13,14,15
    fol el in zip(lst1, lst2, lst3):
    	print(el)
    # (1, 'a', '11')
    # (2, 'b', '12')
    # (3, 'c', '13')
    
  31. sorted():排序

    l1 = [7, 4, 1, 6,]
    print(sorted(l1)) # 形成了新的列表
    # 加key
    lst = [
        {'name': 'xiaohong', 'age': 73},
        {'name': 'xiaoming', 'age': 35},
        {'name': 'xiaoli', 'age': 25},
    ]
    print(sorted(lst, key=lambda x: x['age'])) # 按照年龄排序
    print(sorted(lst, key=lambda x: x['age'], reverse=True)) # 第三个参数,逆序
    
  32. filter(): 过滤,相当于生成器表达式的筛选模式,返回一个迭代器

    l1 = [56, 67, 12, 34, 78, 90]
    print([i for i in l1 if i > 60])  # [67, 78, 90]
    print(list(filter(lambda x: x > 60, l1))) # [67, 78, 90]
    
  33. map():相当于生成器表达式的循环模式

    l1 = [56, 67, 12, 34, 78, 90]
    print([i**2 for i in l1])
    print(list(map(lambda x: x**2, l1))
    
  34. reduce():python 3从内置函数剔除了,放到了模块中

    from functools import reduce
    print(reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])) # 15
    '''
    第一次: x,y 1,2 求和 3  记录到内存
    第二次: x,y 3,3 求和 6  记录到内齿
    第三次: x,y 6,4 求和 10  记录到内齿
    第四次: x,y 10,5 求和 15  返回
    '''
    

三, 递归函数

  • 函数或其他的代码都可以解决递归解决的问题,但是递归在某些时候能有出奇制胜的效果

  • 自己调用自己

    def func(n):
        print('in func')
        n += 1
        print(n)
        func(n)
    func(0)
    # 官网规定:默认递归的最大深度是1000次
    # 如果递归超过100次还没有解决这个问题,那么执意使用递归,效率很低.
    # import sys
    # sys.setrecursionlimit(10000000)  # 设定递归最大次数
    
    # 例一
    def age(n):
        if n == 1:
            return 18
        else:
            return age(n - 1) + 2
    print(age(4))
    '''
    n = 4      age(3) + 2
    n = 3      age(2) + 2
    n = 2      age(1) + 2
    n = 1      18
    '''
    # 例二
    l1 = [1, 3, 5, ['小马', '小刘', 18, [33, 44, [55, 77]]], [99, 22, 11, 9], 21]
    
    def func(lst):
        for el in lst:
            if type(el) != list:
                print(el)
            else:
                func(el)
    func(l1)
    
posted @ 2019-06-21 19:08  怀心抱素  阅读(228)  评论(0编辑  收藏  举报