zoukankan      html  css  js  c++  java
  • 老男孩Python全栈开发(92天全)视频教程 自学笔记15

    day15课程内容:

      高阶函数

      1、函数名可以进行赋值

      2、函数名可以作为参数,也可以作为函数的返回值

      

    def f():
    print("高阶函数")
    def bar(a,b,c):
    c()
    print("高阶函数%s%s"%(a,b))
    bar(1,1,f)
    # 高阶函数
    # 高阶函数11
    ###############
    def f1(n):
    print("高阶函数调用%s"%n)
    return n*n
    def bar1(a,b,c):
    d=c(a)+c(b)
    print(d)
    bar1(1,3,f1)
    # 高阶函数调用1
    # 高阶函数调用3
    # 10
    ############
    def f3():
    print("高阶函数返回函数名的那个函数")
    def bar2():
    print('这函数能返回函数名')
    return f3
    bar2()()
    # 这函数能返回函数名
    # 高阶函数返回函数名的那个函数

    递归函数

    def f(n):   # 循环函数 计算n的阶乘
    sum=1
    for i in range(1,n+1):
    sum*=i
    return sum
    print(f(7))
    ##########
    def f1(n): #递归函数 计算n的阶乘
    if n==1:
    return 1
    return n*f1(n-1)
    print(f1(7))
    # 递归函数的特性:
    # 1、调用自身函数
    # 2、有一个结束条件
    # 但凡递归可以解决的 循环函数都可以解决
    #递归的效率在很多情况下效率非常低 不建议使用

    #菲波那切数列 0 1 1 2 3 5 8 13 21
    def f2(n): #循环函数求菲波那切数列
    if n==1:
    return 0
    before=0
    after=1
    ret=before+after
    before=after
    after=ret
    return ret
    print(f2(1)) #0
    #########
    def f3(n): #用递归函数写菲波那切数列
    if n==1:
    return 0
    if n==2:
    return 1
    return f3(n-2)+f3(n-1)
    print(f3(9)) #21


      几个内置的高阶函数

      

      #筛选器########

    str='abcd'      #被筛选的序列
    def f1(s): #筛选条件,返回经过筛选的元素
    if s!='a':
    return s

    ret1=filter(f1,str) #过滤器 类型是迭代器
    print(list(ret1)) #将迭代器类型,转化为列表形式输出

    #map迭代器########
    str1='hello world!' #待处理的序列
    def f2(s): #处理函数
    return s+'-map!'
    ret2=map(f2,str1) # 将str1序列中的每一个元素,进行fun2处理,返回一个迭代器
    print(list(ret2)) #将迭代器转化为列表输出

    #reduce 数列好用的迭代器
    from functools import reduce
    def f3(a,b):
    return a+b
    ret3=reduce(f3,range(1,101)) #返回一个值。将序列的前两个元素传入f3,然后再将返回值 和第三个元素传入f3
    print(ret3)


    #函数式编程 匿名函数 lambda
    ret4=lambda a,b:a*b,[2,5] #lambda 形参:函数体,实参
  • 相关阅读:
    TC SRM 591 (Div2. Practice only)
    SDL2 简单实现图片缩放移动查看
    Linux下socket编程 address already in use 问题
    POJ 2155 二维树状数组
    OJ开发笔记(1)
    开通博客啦~
    [转]STL transform算法中使用toupper函数
    Monkey and Banana HDU 1069
    Ignatius and the Princess IV HDU 1029
    Dungeon Master POJ 2251
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/7911038.html
Copyright © 2011-2022 走看看