day15 匿名函数及常用内置函数

"""
今日内容:
    1、生成器的send方法
    2、递归函数
    3、匿名函数
    4、匿名函数的应用
    5、常用的内置函数
"""

"""
# 1、生成器的send方法
    -- 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值
    -- 什么是send方法?
        -- send方法相当于高级的next方法,send方法不仅可以通过yield方法取出生成器中的值,还可以向生成器中传值
    -- send方法的工作步骤:
        -- 由于生成器在执行过程中,不会直接执行,当使用next方法进行取值时才会执行,当遇到yield关键字时停止,并把yield中的值传递出来
        -- 首先,send方法会将外界的值传递进生成器内部,在由生成器中相应的变量进行接收
        -- 然后,生成器会向下执行,直到遇到下一个yield停止,并将yield后面的值返回出来 --> 相当于next方法
        -- 需要注意的是,由于生成器不会自动运行,只有在遇到next时才会向下执行,所以在遇到第一个yield之前不能使用send向生成器中传递值,或者只能传递None
        
# 案例:
persons = ['张三', '李四', '王五', '赵六', '钱七']

def order(persons):
    for i in range(len(persons)):
        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、递归函数
    -- 什么是递归函数?
        -- 函数直接或者间接调用自身都叫递归函数
        -- 回溯:通过条件找寻答案的过程
        -- 递推:通过答案进行回推的过程
        
    -- 递归函数的特点:
        -- 递归函数必须有出口
        -- 递归函数进行回溯及递推时必须有规律
        
# 案例一:获得第 count 个人的年纪
def get_age(count):
    if count == 1:
        return 58
    # 第 九...一 个人 - 2
    age = get_age(count - 1) - 2
    return age

age = get_age(3)
print(age)
"""

"""
# 3、匿名函数
    -- 什么是匿名函数?
        -- 匿名函数就是不需要函数名的函数,该函数使用一次就会被回收。
        
    -- 匿名函数:
        -- 匿名函数没有函数名
        -- 匿名函数的关键字采用lambda
        -- 关键字 lambda 与标识函数功能体 : 之间一定是参数,所以省略()
        -- 匿名还是没有函数体,只有返回值,所以函数体和返回值的return关键字都省略了
        
    -- 匿名函数的形式:
        lambda *args, **kwargs: '返回值'

    -- 注意:
        -- 参数的使用和有名函数一样,六种形参都支持
        -- 返回值必须明确成一个值,可以为单个值对象,也可以为一个容器对象
    -- 实例:
a = lambda *args, **kwargs: '返回值1', '返回值2'
print(a)  # (<function <lambda> at 0x0000022D0B7E88C8>, '返回值2')    
"""

"""
# 4、匿名函数的应用
    -- 匿名的函数经常会配合内置函数进行使用
    -- 实例:
        -- max、min、sorted函数
            max(iter, lambda x: x)
            min(iter, lambda x: x)
            sorted(iter, fn, reverse)
        -- map、reduce函数
            map(lambda x: x * 2, [3, 1, 2])
            reduce(lambda x, y: x * y, [3, 1, 2])

"""

"""
# 5、常用的匿名函数
    -- 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\nb')
print(ascii('a\nb'))
print(repr('a\nb'))


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

猜你喜欢

转载自www.cnblogs.com/lice-blog/p/10815740.html