前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >老男孩Python全栈开发(92天全)视频教程 自学笔记15

老男孩Python全栈开发(92天全)视频教程 自学笔记15

作者头像
玩蛇的胖纸
发布2018-06-08 13:13:00
5530
发布2018-06-08 13:13:00
举报

day15课程内容:

  高阶函数

  1、函数名可以进行赋值

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

代码语言:javascript
复制
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()()
# 这函数能返回函数名
# 高阶函数返回函数名的那个函数

递归函数

代码语言:javascript
复制
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

  几个内置的高阶函数

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

代码语言:javascript
复制
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 形参:函数体,实参
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • day15课程内容:
    •   高阶函数
      • 递归函数
        •   几个内置的高阶函数
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档