1、函数名

  函数名就是一个变量名, 函数名存储的是该函数的内存地址.

     函数名都可以进行哪些应用?

    函数名可以赋值给其他的变量;

    函数名可以作容器里的元素使用;

    函数名可以当做形参传进另一函数;

    函数名可以作为函数的返回值, 即 return func, 在全局调用.

  代理模式?

    给某一函数在执行前后执行后加上某些功能, 是装饰器的雏形.

 def chi(f):
print("吃汉堡")
f()
print("吃炸鸡")
def he():
print("喝肥宅快乐水") chi(he)

代理模式

2、闭包

  内层函数对外层函数的变量的引用.

  作用:  1, 保护变量不受更改;  2, 让变量常驻于内存不会被销毁.

 # 闭包
def outer():
a = 100
def inner(): # inner()函数要用到父级的a, 所以inner()函数就是一个闭包.
b = a + 50
return b
return inner # 函数名作为函数的返回值,在全局调用 ret = outer()
ret() # 在外部调用里层的函数

闭包

3、迭代器

  (前情:)内置函数---- dir(查询的对象) : 可以查出该对象可以执行的操作(即内部可执行方法)

      可以用dir(list)查询是否有__iter__() 或__next__() 方法.

  可迭代对象: 可循环遍历的对象, 即str, list, dic, tuple, set.  内部只有__iter__()方法.

  迭代器: 内部既有__iter__() 方法,也有__next__() 方法.

  for 循环遍历机理?

 lst = ["李白","李黑","李太白","李太黑","李不白",]    # 可迭代对象
it = lst.__iter__() # 先变成迭代器
while 1:
try:
content = it.__next__() # 迭代器通过__next__()来取值
print(content)
except StopIteration: # 取完了就直接添加错误,然后停止
print("遍历完了可以结束了")
break

for循环遍历机理

  判断一个对象(str)是否是一个可迭代对象?

    1: 通过dir(str) 看有没有__iter__();

    2: print("__iter__" in dir(str) ) ----> True : 是可迭代对象;

    3: from collections import Iterable, Iterator

     print( isinstance(str, Iterable) )  ----> True : 是可迭代对象

  迭代器的三个特点?

    1: 节省内存(用生成器);

    2: 惰性机制, 必须使用__next__()来获取数据;

    3: 只能向后执行, 不能再返回前一级.

python摸爬滚打之day11----函数闭包,迭代器的更多相关文章

  1. python基础学习Day11 函数名的应用、闭包、迭代器

    一.函数名的应用 1.函数名就是函数的内存地址 def func(): print(666) func() print(func) #函数的内存地址 2.函数名可以作为变量 def func1(): ...

  2. python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)

    一.函数名应用 函数名是什么?函数名是函数的名字,本质:变量,特殊的变量. 函数名(),执行此函数. python 规范写法 1. #后面加一个空格,再写内容,就没有波浪线了. 2.一行代码写完,下面 ...

  3. 12.Python略有小成(生成器,推导式,内置函数,闭包)

    Python(生成器,推导式,内置函数,闭包) 一.生成器初始 生成器的本质就是迭代器,python社区中认为生成器与迭代器是一种 生成器与迭代器的唯一区别,生成器是我们自己用python代码构建成的 ...

  4. Python函数05/内置函数/闭包

    Python函数05/内置函数/闭包 目录 Python函数05/内置函数/闭包 内容大纲 1.内置函数(二) 2.匿名函数及内置函数(重要) 3.闭包 4.今日总结 5.今日练习 内容大纲 1.内置 ...

  5. python 内嵌函数, 闭包, 函数装饰器

    一.  函数内嵌 闭包 在python中,函数可以作为返回值, 可以给变量赋值. 在python中, 内置函数必须被显示的调用, 否则不会执行. #!/usr/bin/env python #-*- ...

  6. Python开发——函数【迭代器、生成器、三元表达式、列表解析】

    递归和迭代 小明问路篇解释说明 递归:小明——>小红——>小于——>小东:小东——>小于——>小红——>小明 小明向小红问路,因小红不知道,所以向小于问路,因小于不 ...

  7. day11 第一类对象 闭包 迭代器

    今日主要内容: 1 . 第一类对象 -->函数名--> 变量名 2. 闭包 -->函数的嵌套 3. 迭代器 --> 固定的思想 for 循环 第一类对象  : 函数对象介意向变 ...

  8. Python函数系列-迭代器,生成器

    一 迭代器 一 迭代的概念 #迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 while True: #只是单纯地重复,因而不 ...

  9. Python函数-闭包的概念

    一个函数和它的环境变量合在一起,就构成了一个闭包(closure).在Python中,所谓的闭包是一个包含有环境变量取值的函数对象.环境变量取值被保存在函数对象的__closure__属性中.比如下面 ...

随机推荐

  1. 模仿CyclicBarrier,自定义自己屏障类

    简介 在这里模仿CyclicBarrier,自定义一个自己多线程屏障类,里面有个计时器count,count为0时,才唤醒线程,否则就await挂起,(没错就是用的object类的挂起和唤醒全部线程方 ...

  2. 十分钟学会Charles抓包(iOS的http/https请求)

    ### 原文地址,感谢作者 : http://www.jianshu.com/p/5539599c7a25 Charles安装 HTTP抓包 HTTPS抓包 1. Charles安装 官网下载安装Ch ...

  3. Java知多少(23)类的基本运行顺序

    我们以下面的类来说明一个基本的 Java 类的运行顺序: public class Demo{ private String name; private int age; public Demo(){ ...

  4. 关于Unity中ARPG游戏人物移动(专题十一)

    ARPG:动作型角色扮演类游戏 大多数的ARPG游戏都是使用摇杆操作,以第三人称摄像机的方式来跟随主角,实际上人物只走八个方向,上,下,左,右,左上,左下,右下,右上 控制角色移动的思路1: 在ARP ...

  5. Cisco HSRP热备份路由器协议配置

    HSRP热备份路由器协议: HSRP是 Hot Standby Routing Protocol(热备份路由协议)的缩写,它的作用是当核心路由器不能正常工作时, 备用路由器能够实现自动平滑的替换,以保 ...

  6. feign调用接口session丢失解决方案

    微服务使用feign相互之间调用时,因为feign默认不传输Header,存在session丢失的问题.例如,使用Feign调用某个远程API,这个远程API需要传递一个鉴权信息,我们可以把cooki ...

  7. 通过mysql写入php一句话木马

    利用mysql写入一句话木马 前提: root权限,知道了服务器的web的绝对路径 select "<?php @eval($_POST['pass']);?>" IN ...

  8. Java处理Exception无法捕获的异常

    场景: 使用try...catch(Exception e){}来捕获异常,执行过程中线程中断或阻塞了,但是catch块中却并没有捕获到异常信息. try{ // 此处可能是调用一个远程的接口,或是调 ...

  9. mongodb 建立索引提示异常:WiredTigerIndex::insert: key too large to index, failing 1483

    { "ok" : 0.0, "errmsg" : "WiredTigerIndex::insert: key too large to index, ...

  10. NIO相关概念之Channel

    通道(Channel)是java.nio的第二个主要创新.它们既不是一个扩展也不是一项增强,而是全新.极好的Java I/O示例,提供与I/O服务的直接连接.Channel用于在字节缓冲区和位于通道另 ...