【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. Android 让系统自动生成缩略图并写入媒体库

    MediaStore.Video.Thumbnails.getThumbnail(ContentResolver cr, long origId, int kind, BitmapFactory.Op ...

  2. Primitive data types recap

  3. Paper阅读总结Day1

    Paper阅读总结Day1 1.Convolutional Neural Networks For Facial Expression Recognition 文章思想 简单的一篇关于表情识别的文章, ...

  4. 使用 Shiro 设计基于用户、角色、权限的通用权限管理系统

    一.前言 在大型的信息管理系统中,经常涉及到权限管理系统 下面来个 demo,很多复杂的系统的设计都来自它 代码已经放到github上了,地址:https://github.com/larger5/s ...

  5. day21 模块

    目录 模块 import 与 from...import 循环导入问题 解决方案一 解决方案二 Python文件的两种用途 从普通的面条型代码,到函数型代码,其实是在做什么? 封装代码,一个函数差不多 ...

  6. Eclipse中使用GIT更新项目

    GIT更新项目: 右击项目——Team——Pull:

  7. 路飞学城Python-Day22

  8. laravel :Call to undefined function App\Http\Controllers\success() 解决方法

    今天在调用方法时,报错如下:Call to undefined function App\Http\Controllers\success():方法已定义好了,所以我怀疑是未引入function.ph ...

  9. [USACO18JAN] Lifeguards S (线段树:扫描线面积)

    扫描线裸题没什么好说的 注意空间不要开小了!!! #include <cstdio> #include <cstring> #include <algorithm> ...

  10. python3 列表操作

    - 创建列表 #创建列表: list1 = [1, 2, 3, 4, 5] - 向列表中添加元素 - append # 向列表中添加元素: list1 = [1, 2, 3, 4, 5] list1. ...