博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
迭代器,递归,函数名的使用,闭包
阅读量:5025 次
发布时间:2019-06-12

本文共 785 字,大约阅读时间需要 2 分钟。

1函数名的使用

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

可以当做参数传递。

 

 

 

 

 

 

 

 

 

2闭包

 

定义:一个嵌套函数

嵌套内部的函数使用外部(非全局变量)

满足以上两条就是闭包

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

python中闭包,后进行内存驻留,普通函数执行完就会销毁。

全局里存放会有污染和不安全的现象

面试必问,装饰器---装饰器的本质就是闭包

闭包的弊端:内存会出现泄漏

3迭代器

3.1可迭代对象

可以被for循环的就是可迭代对象

Python中有一个迭代协议:

 

 

 

 

 

 

3.2迭代器

迭代器的特性:

惰性机制

不能从下往上走

一次性的用完就没了

节省内存

for循环的机制:

 

 

 

 

 

4.递归(重点重点重点重点重点重点)

自己调用自己

有明确的结束条件

 

 

 

 

 

 

 

 

 

 

 

 

1.函数名的使用

a=函数名

a()

返回值 函数名 #返回函数名的时候不能加括号

函数名:可以当容器的元素

函数名:可以当做参数被传递

 

 

2:闭包

1:首先有一个嵌套函数

2:嵌套函数内部函数调用非全局的变量

3:将内部函数名当做返回值返回,在全局调用

 

怎么查看闭包?

函数名.__closure__返回None 就不是闭包

 

装饰器的本质就是闭包

优点:安全,装饰器需要

缺点:容易造成内存泄漏

 

 

3:迭代器:

可迭代对象:具有__iter__方法就是可迭代对象

迭代器:具有__iter__方法,__next__就是迭代器

for循环的机制就是迭代器

 

 

 

4:递归

 

def func(n):

n+=1

prinit(n)

if n==5:

return

func(n)

func(2)

 

 

 

 

小结:递归的效率比较低,尾递归的用时和for的用时是一样的

正常运行的时候比for慢

递归的 最大深度 官方是1000,实际测试998/997

 

递归的应用场景:

在不明确要循环的次数的时候,可以用递归

递归操作文件目录

 

转载于:https://www.cnblogs.com/guoqiming/p/10554136.html

你可能感兴趣的文章
第10周15/16/17
查看>>
【数据库】SQL两表之间:根据一个表的字段更新另一个表的字段
查看>>
四六级作文常见错误解析(转载)
查看>>
Tomcat
查看>>
./是当前目录 ../是当前的上一级目录。上上级就是../../一般绝对路径时候常用...
查看>>
linux支持FTP和SFTP服务【1】
查看>>
树的递归与非递归遍历方法
查看>>
每天一个Linux命令(6):rmdir命令
查看>>
oracle连接的三个配置文件(转)
查看>>
Vim配置文件(Vimrc)
查看>>
RecyclerView 局部刷新(获取viewHolder 去刷新)
查看>>
PHP表单(get,post)提交方式
查看>>
使用vbs或者bat脚本修改IE浏览器安全级别和选项
查看>>
Silverlight入门
查看>>
Silverlight动态调用WEBSERVICE,WCF方法
查看>>
LeetCode 895. Maximum Frequency Stack
查看>>
模仿segmentfault 评论
查看>>
一个简单的日志函数C++
查看>>
Java 8 中如何优雅的处理集合
查看>>
IOS程序的启动过程
查看>>