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 形参:函数体,实参

老男孩Python全栈开发(92天全)视频教程 自学笔记15的更多相关文章

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

    day2课程目录: 操作系统的历史 二进制运算 字符编码与计算机容量 编程语言介绍 开发语言分类 演讲能力锻炼 day2课程内容梳理: 操作系统发展史: Unix系统 极其稳定 现在很多银行还在用 L ...

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

    day3课程目录: pyhton的历史 32bit和64bit系统的区别 Python版本的选择 第一个pyhton程序 文件后缀名及系统环境变量的介绍 pyhton程序的执行和其他编程语言的简单对比 ...

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

    day1课程目录: 开课介绍(1) 开课介绍(2) 开课介绍(3) 电脑简史(1) 电脑简史(2) 计算机结构 day1课程内容梳理: 导师介绍: Alex Li(金角大王):买了一辆特斯拉,喜欢姑娘 ...

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

    day9课程内容: 乌班图(ubuntu)64位系统 和 VMware 虚拟机安装(官网收费又麻烦,在网上找资源 安装vmware: vm运行(秘钥找度娘)--文件--新建虚拟机--自定义 下一步-- ...

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

    day20课程内容: 模块: #模块一共三种:1.Python标准库 2.第三方模块 3.应用程序自定义的模块#import sysimport jisuanapp#print(jisuanapp.a ...

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

    day7课程内容: Python的编码解码 二进制 --->ASCII:只能存英文和拉丁字符,一个字符占一个字节,8位 ------->gb2312:只能6700多个中文,1980年 -- ...

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

    day6课程内容: tuple(元祖) 创建元祖: tup0=() #没有元素的一个元祖 tup1=(20,)#只有一个元素的元祖 元祖可读,不可修改 Dictionary(字典)#Python里唯一 ...

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

    day5课程内容: 集成开发环境(IDE) VIM #经典的Linux下的文本编辑器 Eclipse #Java IDE Visual Studio #微软开发的IDE notepad++ subli ...

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

    day4课程目录: 逻辑运算符 while循环 day4课程内容梳理: 逻辑运算符 算数运算符:+,-,*,/,%,** 比较运算符:< ,>, ==,<=,>=,!=, 逻辑 ...

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

    day21课程内容:  json: #序列化 把对象(变量)从内存中 编程可存储和可传输的过程 称为序列化import jsondic={'name':'abc','age':18}with open ...

随机推荐

  1. mybatis-XML配置文件

    <?xml version="1.0" encoding="UTF-8" ?><!--plugins在配置文件中的位置必须要符合要求,否则会报 ...

  2. python_如何快速安装第三方库?

    如何快速安装第三方库? 通过python 豆瓣园源https://pypi.douban.com/simple/进行安装,利用国内网速 如何安装? pip -i install https://pyp ...

  3. python2.7.5 安装pip

    1 先安装setuptools 下载地址:https://pypi.python.org/pypi/setuptools#downloads 将下载后的tar文件解压,用CMD模式进入到解压后的文件所 ...

  4. Linux Shell 文件描述符 及 stdin stdout stderr 重定向

    Abstract: 1) Linux Shell 命令的标准输入.标准输出.标准错误,及其重定位: 2)Linux Shell 操作自定义文件描述符: 文件描述符是与文件相关联的一些整数,他们保持与已 ...

  5. ulua c#调用lua中模拟的类成员函数

    项目使用ulua,我神烦这个东西.lua单纯在lua环境使用还好,一旦要跟外界交互,各种月经不调就来了.要记住贼多的细节,你才能稍微处理好.一个破栈,pop来push去,位置一会在-1,一会在-3,2 ...

  6. SpringMVC 参数绑定注解解析

    本文介绍了用于参数绑定的相关注解. 绑定:将请求中的字段按照名字匹配的原则填入模型对象. SpringMVC就跟Struts2一样,通过拦截器进行参数匹配. 代码在 https://github.co ...

  7. excel中的数据导出为properties和map的方法

    在做项目的过程中,经常需要处理excel数据,特别是和业务人员配合时,业务人员喜欢使用excel处理一些数据,然后交给我们技术人员进行程序处理.利用POI读取写入excel数据,是经常使用的一个情景. ...

  8. java基础(一) 深入解析基本类型

    .   浮点数使用 IEEE(电气和电子工程师协会)格式. 浮点数类型使用 符号位.指数.有效位数(尾数)来表示.要注意一下,尾数的最高 在java中,float 和 double 的结构如下: 类 ...

  9. jQuery应用操作之---网页选项卡(tabs)

    示例: <div class="tab"> <div class="tab_menu"> <ul> <li class ...

  10. 生成模型(generative model)与判别模型(discriminative model)的区别

    监督学习可以分为生成方法与判别方法,所学到的模型可以分为生成模型与判别模型. 生成模型 生成模型由数据学习联合概率分布\(P(X,Y)\),然后求出条件概率分布\(P(Y|X)\)作为预测的模型,即生 ...