【23.函数-高阶函数】
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称为高阶函数
如果一个函数可以接收另一个函数,这个函数就称为高阶函数

def func(x,y):
return x+y
def calc(x):
return x
f = calc(func)
print(f(5,9))

示例

输出结果

总结
1.接收一个或多个函数作为输入
2.return返回另外一个函数

【24.递归介绍】
什么是递归?
递归就是在函数的过程中调用自己

def recursion(n):
recursion(n+1)
print("这就是递归")
recursion(1)

示例

输出结果

python在调用的过程中超过了最大递归层的限制
print(sys.getrecursionlimit())
sys.getrecursionlimit(1500)#修改最大递归层数的限制

总结
递归调用就是不断的在函数自己里再执行,一直不结束,直到把内存撑爆了,所以需要有限制机制,于是python内部就加上了函数的限制

【25.函数-递归与栈的关系】
递归的本质,函数的调用时通过栈来执行的,栈就像是一个容器,内部是有数据大小限制的
每执行一次函数就会往栈里放内容,不断的放在栈里就容易溢出,只有函数结束以后,栈才会处理垃圾数据

【26.递归的作用】
可以用来解决复杂的数学问题,比如斐波那契数列等
使用递归的场景

def calc(n):
v = int(n /2)
print(v)
if int(v) == 0:
return 'Done'
calc(v)
calc(10)

需求:使用10整除2,直到得到0为止

输出结果

【27.递归的特性总结】
递归是层级进入执行,函数执行完结束也是层级结束的

1.必须有一个明确的结束条件,要不就会变成死循环了,最终撑爆系统
2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3.递归执行效率不高,递归层次过多会导致栈溢出

【28.递归的作用】
递归的作用,斐波那契数列,汉诺塔,求阶乘等

def factoial(n):
if n == 1:
return 1
return n * factoial(n-1)
print(factoial(4))

阶乘,每递归一次就要算一次阶乘

输出结果

【29.尾递归优化】
有没有优化的方式可以优化递归的效率?

def cal(n):
print(n)
return cal(n+1)
cal(1)

尾递归示例

尾递归就是在函数执行的时候直接用return调用,第一层调用第二层函数的时候,使用return直接结束第一层函数的执行,就是层层之间互相不再有对应的关系
也就是说当没有必要保留每一层的数据的时候,就可以直接用return调用下一层的函数,不再对栈有多余的占用

然而尾递归优化并不是所有的语言都是支持的,在C语言里是支持的,但是再python里是没有任何用的,python不会有尾递归优化的

【30.函数-内置方法1,2,3,4,5】
python里有几十种内置方法
abs()>>取绝对值 函数返回数字的绝对值
dict()>>把一个数据转换成字典
help()>>查看帮助
min()>>方法返回给定参数的最小值,参数可以为序列
max()>>方法返回给定参数的最大值,参数可以为序列
setattr()>>【面向对象详细讲】函数对应函数 getatt(),用于设置属性值,该属性必须存在
all()>>函数用于判断给定的可迭代参数(元祖或列表) iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。元素除了是 0、空、FALSE 外都算 TRUE

li = [1,2,3,4]
all(li)#这里会返回True
li.append(0)
all(li)#这里会返回False

示例

any()>>any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True
bool()>>判断输入的值是不是True
dir()>>打印当前文件存在的所有变量,包括你自定义的和python解释器自带的
hex()>>十六进制,将一个数字转换为十六进制的表达方式
next()
slice()>>切片
divmod()>>求整除和余数,先得到结果再返回余数
id()>>返回传入的内存地址
object()>>
sorted()>>排序,可以对字典的value排序,用在列表里的排序,sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作
ascii()>>返回一个可打印的对象字符串方式表示
enumerate() >>枚举法用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
input()>>用户交互输入
oct()>>将输入的数字转换为八进制
staticmethod()>>返回函数的静态方法【以后会讲】
bin()>>转换为二进制
eval() >>函数用来执行一个字符串表达式,并返回表达式的值,将字符串解析成代码(只能处理单行的代码)
exec()>>和eval功能相同,而且能执行多行代码,exec是没有返回值的
int()>>将数字转换为整数,不能转换的就报错
open()>>打开文件
str()>>将数字或字符转换为字符串形式
isintance()>>【面向对象】
ord()>>通过字符串返回在ascii表中的位置
chr()>>通过ascii表中的位置返回字符串对应值
sum()>>求和
bytearray()>>返回一个新字节数组,这个数组里的元素是可变的(原内存地址修改,不是重开辟内存空间)
map()>>根据提供的函数对指定序列做映射,可以用来求列表内的元素自乘(配合lambda函数)list(map(lambda x:x+3,[1,2,3,4,5]))
filter()>>过滤,找到符合条件的值--list(filter(lambda x:x>3,[1,2,3,4,5]))
pow()>>返回输入的数字的幂级数
super()>>【面向对象讲】
bytes()>>返回输入的二进制数
float()>>浮点数
iter()>>生成迭代器
print()>>print(*objects, sep=' ', end='\n', file=sys.stdout)

objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
sep -- 用来间隔多个对象,默认值是一个空格。
end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
file -- 要写入的文件对象
print可以直接把字符串打印到文件里
msg = '小邋遢'
f = open("ptint_to_file",'w')
print('真呀真邋遢',sep = '|',end = "")

print内部参数解读

tuple()>>转换为元祖
callable()>>判断一个东西是否可调用,可以判断变量是否是函数
len()>>判断字符串的长度
property()>>【面向对象】
type()>>判断参数的数据类型
frozenset()>>返回一个冻结的集合,冻结后集合不能再添加或删除任何元素
vars()>>打印当前所有的变量
locals()>>在函数的内部执行,打印当前函数的所有的局部变量
globals()>>无论在函数内部还是外部都打印全局的变量
zip()>>函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表,只能是一一对应的关系

l1 = [1,2,3,4]
l2 = ['a','b','c','d']
print(list(zip(l1,l2)))

示例:

路飞学城Python-Day9的更多相关文章

  1. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...

  2. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  3. 路飞学城Python爬虫课第一章笔记

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...

  4. 路飞学城-Python开发集训-第3章

    学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...

  5. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  6. 路飞学城-Python开发集训-第4章

    学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...

  7. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...

  8. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  9. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  10. 路飞学城-Python开发-第一章

    # 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...

随机推荐

  1. CodeIgniter 相关资源

    CodeIgniter ci 如果需要扩展多个base Controller,譬如一个 core/MY_Controller表示基本Controller,一个  core/MY_AuthControl ...

  2. Linux下安装桌面

    1.         安装之前先测试是否有桌面 2.         建立yum源文件   3.         挂载好光盘(/rhel自己创建)   4.         使用yum list 查看 ...

  3. sql调优《二》

    1.数据库设计(是否复合范式,是否合理归档.分区.分表等) 2.硬件基础架构 (设备规格,硬件性能,负载均衡,容灾等) 3.ql语句的写法.索引和统计信息,事务和锁,应用程序访问代码(连接过多.频繁开 ...

  4. UVa 11520 Fill in the Square

    题意:给出 n*n的格子,把剩下的格子填上大写字母,使得任意两个相邻的格子的字母不同,且从上到下,从左到右的字典序最小 从A到Z枚举每个格子填哪一个字母,再判断是否合法 #include<ios ...

  5. thinkphp5-----模板中函数的使用

    1.在模板中使用php函数 在thinkphp的html中,我们经常会遇到一些变量难以直接从php控制端直接处理,这些变量只有在模板中循环输出的时候处理比较合适,这个时候,我们就要在模板中使用函数 1 ...

  6. 03《UML大战需求分析》之三

    学习了活动图之后,我又学习了流程分析工具之二的状态机图.看上去状态机图和活动图很类似,我也很容易从活动图的角度来理解状态机图.但是学习之后,发现两种图是两种完全不同的分析角度.活动图在流程分析时是玩你 ...

  7. javascript: 基于原型的面向对象编程

    Douglas Crockford指出javascript是世界上最被误解的编程语言.由于javascript缺少常见的面向对象概念,许多程序猿认为javascript不是一个合适的语言.我在做第一个 ...

  8. 动态生成的dom元素绑定事件

    要求:要绑定到父元素上$(".school_Inlists").on("click",".chose_Inbtn",function(){ ...

  9. Pyhton学习——Day29

    #异常与错误# 什么是异常?# 异常就是程序运行时发生错误的信号,在程序出现错误时,则会产生异常,若没有程序处理,则会抛出异常# 导致程序在异常语句处崩溃终止# Traceback 追踪异常信号:** ...

  10. PAT 天梯赛练习集 L2-016. 愿天下有情人都是失散多年的兄妹

    题目链接:https://www.patest.cn/contests/gplt/L2-016 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母. ...