zoukankan      html  css  js  c++  java
  • 第十五章 函数————函数的递归、生成器send 、匿名函数

    1.生成器send方法

    send的工作原理

    1.send发生信息给当前停止的yield

    2.再去调用__next__()方法,生成器接着往下指向,返回下一个yield值并停止

    例:

    persons=['张三', '李四', '王五', '赵六', '钱七']

    def order(persons):

      for i  in ragne(len(persongs)):

        if  i==0:

          print('%s在面试' % persons[0])

        else:

          print('%s叫%s在面试' % (name, persons[i]))

        print('%s面试完毕' % persons[i])

        name = yield persons [i]

    obj = order(persons)

    for i in range(len(persons)):

      if i == 0:
         p = obj.__next__()
      else
    :
        p = obj.send(p)
    print('=============================')

        

    2.函数的递归

    递归:

    函数直接或间接调用本身,都称之为递归

    回溯:找寻答案的过程

    递推:推出答案的过程

    前提条件:

    1.递归必须有出口

    2.递归回溯地推的条件一定有规律

    例:

    def get_age(count):

      if  count ==1

        return  58

      age = get_age(count -1)-2

      return age

    age = get_age(3)

    print(age)

    例:

    def  jiecheng(n):

      if n==1 or n ==0

        return 1

      j = n *jiecheng(n-1)

      return j

    res = jiecheng (5)

    print (res)

    3.匿名函数

     def fn (*args,**kwargs):

      函数体

         return'返回'

    匿名函数:

    1.匿名函数没有函数名

    2.匿名函数的关键字采用 lambda

    3.关键字 lambda 与标识函数功能体 之间一定是参数,所以省略()

    4.匿名函数是没有函数体,只有返回值,所以函数体和返回值的return关键字都省略了

    lambda *args,**kwargs:  'f返回值'

    注意:

    1.参数的使用和有名函数一样,六种形参都支持

    2.返回值必需明确成一个值,可以为单个值对象,也可以为一个容器对象

    a = lambda *args,**kwargs:'返回值1','返回值2'

    print(a)

    (<function <lambda> at 0x0000022D0B7E88C8>, '返回值2')

    返回值1

    print(a[0]())

     正确返回两个值: 主动构成成容器类型
    lambda *args, **kwargs: ('返回值1', '返回值2')

    4.max结合匿名函数工作原理

     1.max内部会遍历iter,将遍历结果一一传给lambda的参数x
     2.依据lambda的返回值作为比较条件,得到最大条件下的那个遍历值
     3.对外返回最大的遍历值
    max(iter, lambda x: x)


     min工作原理一样,得到的是最小值

    5.常用的内置函数

    map(lambda x: x * 2, [3, 1, 2]) # 将遍历结果映射为任意类型值 [6, 2, 4]

    from functools import reduce
    reduce(lambda x, y: x * y, [3, 1, 2]) # 6

    sorted(iter, fn, reverse)
    dic = {
      'owen': (1, 88888),
      'zero': (2, 66666),
      'tom': (3, 77777),
    }
    res = sorted(dic, key=lambda k: dic[k][1])
    print(res) # ['zero', 'tom', 'owen']

    res = sorted(dic, key=lambda k: dic[k][1], reverse=True)
    print(res) # ['owen', 'tom', 'zero']

     1.与类型相关的
     list() str() ord() chr() bool() int() ...

    print(ord('A'))
    print(chr(97))

     2.进制转化
    print(bin(10)) # 1010
    print(oct(10)) # 12
    print(hex(10)) # a

    print(0b1111) # 15
    print(0o10) # 8
    print(0x11) # 17


     3.常用操作类的
     range() len() iter() next() enumerate() id() type() print() input() open()

     4.原义字符串
    print(r'a b')
    print(ascii('a b'))
    print(repr('a b'))


     5.数学相关运算
     abs() sum() max() min() pow() sorted()
    print(abs(-1))
    print(pow(2, 3)) # 2**3
    print(pow(2, 3, 3)) # 2**3%3

  • 相关阅读:
    android dumpsys meminfo 详解
    效率思维模式与Zombie Scrum
    Mac中Run快捷键修改
    airtest+pytest实战教程05—登录智学网app
    对select函数的理解
    Appium定位元素
    Hack The Box——ServMon
    Oracle DG常用视图与运维护常用操作
    Oracle EBS订单的流程(Order->AR)
    财经法规与会计职业道德
  • 原文地址:https://www.cnblogs.com/sry622/p/10796480.html
Copyright © 2011-2022 走看看