Python(函数名,可迭代对象,迭代器)

一、默认参数的坑

# 比较特殊,正常来说临时空间执行结束后应该删除,但在这里不是.
def func(a,l=[]):l.append(a)return l
print(func(1)) # [1]
print(func(2)) # [1,2]
print(func(3)) # [1,2,3]

二、函数名的应用

  1. 函数名指向的是函数的内存地址,加上()就执行这个函数

    def func(args):return args
    print(func) # <function func at 0x00000000024656A8>
    print(func(1)) # 1
  2. 函数名是一个变量

    def age1(a):return a
    age2=age1
    age3=age2
    print(age3(1)) # 1
  3. 函数名可以作为容器类类型的元素

    def func1():print("in func1")
    def func2():print("in func2")
    def func3():print("in func3")
    l=[func1,func2,func3]
    print(l) # [<function func1 at 0x00000000024956A8>, <function func2 at 0x0000000002495730>, <function func3 at 0x00000000024957B8>]
    for i in l:i()
    # in func1
    # in func2
    # in func3
  4. 函数名可以作为函数的实参进行传参

    def func(argv):print(argv)
    def func1():print("in func1")
    def func2(argv):argv()print("in func2")
    a=1
    func(a) # 1
    func2(func1)
    # in func1
    # in func2
  5. 函数名可以作为函数的返回值

    def func1():print("in func1")
    def func2(argv):print("in func2")return argv
    ret=func2(func1)
    print(ret)
    # in func2
    # <function func1 at 0x0000000001DF56A8>

三、可迭代对象

  1. 字面意思分析 : 可以重复迭代的实实在在的东西,list,dict,keys(),values(),tuple,str,set,range,文件句柄这些都属于可迭代对象

  2. 专业角度分析 : 内部含有'_ iter _'方法的对象,就是可迭代对象

    内置函数 : dir()用来获取对象内部属性的方法,可用来判断对象是否符合可迭代要求.

  3. 优点 : 直观,操作方法较多
  4. 缺点 : 占用内存(字典除外),不能迭代取值,索引,字典key

四、迭代器

  1. 字面意思分析 : 可以重复迭代的工具

  2. 专业角度分析 : 内部含有'_ iter_ '并且含有'_ next _'方法的对象,就是迭代器

    可迭代对象转化成迭代器用iter(),迭代器可以迭代取值,利用next()进行取值,迭代器一条路走到底,不走回头路

  3. 优点 : 非常节省内存,惰性机制

  4. 缺点 : 不直观,操作不灵活,效率相对低

    l1=[1,2,3,4,5]
    obj=iter(l1)
    print(next(obj)) # 1
    print(next(obj)) # 2
    print(next(obj)) # 3
    print(next(obj)) # 4
    print(next(obj)) # 5
    print(next(obj)) # 报错

利用while循环,模拟for循环内部循环可迭代对象机制

  1. 先要将可迭代对象转化成迭代器

  2. 利用next()对迭代器进行取值

  3. 利用异常处理try,处理报错

    l1=[1,2,3,4,5]
    l2=iter(l1)
    while 1:try:print(next(l2))except StopIteration:pass

五、可迭代对象与迭代器对比

  1. 可迭代对象是一个操作比较灵活,直观,效率相对较高,但是比较占用内存的数据集
  2. 迭代器是一个非常节省内存,满足惰性机制,但是效率相对较低,操作不灵活的数据集

转载于:https://www.cnblogs.com/chenshuo531702820/p/11052025.html

11.Python初窥门径(函数名,可迭代对象,迭代器)相关推荐

  1. python 函数可以作为容器对象的元素_11.Python初窥门径(函数名,可迭代对象,迭代器)...

    python(函数名,可迭代对象,迭代器) 一.默认参数的坑 # 比较特殊,正常来说临时空间执行结束后应该删除,但在这里不是. def func(a,l=[]): l.append(a) return ...

  2. python——常见内置函数、可迭代对象与迭代器对象

    目录 一.常见内置函数 1.abs() 2.all()与any() 3.bin() oct() hex() 4.int() 5.bytes() 6.callable() 7.chr() ord() 8 ...

  3. python中常用的内置函数,可迭代对象,迭代器对象

    知识点1 :常用内置函数 1 常用内置函数的实际应用 1.1 abs() 返回值是一个绝对值,参数可以是整数和浮点数,如果参数是一个复数,则返回它的模. print(abs(-12.3)) # 12. ...

  4. Python函数名的第一类对象及使用

    函数名的第一类对象只是一种称呼,是相对于第二类对象而言的.我们目前用到的函数基本都是第一类对象. 函数名的第一类对象主要有四个方面的应用: 函数名可以当作值赋值给一个变量 函数名可以当做另一个函数的参 ...

  5. python (第八章)补充-可迭代对象(补充高阶函数,以及常用的高阶函数)

    文章目录 可迭代对象 迭代器 什么是迭代器 什么是生成器 生成器的作用 生成器的注意事项 总结: 高阶函数 什么是高阶函数? map()函数 filter()函数 reduce()函数 参考 可迭代对 ...

  6. python函数名的运用,闭包,迭代器

    一.函数名的运用 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. 1.函数名的内存地址 1 def func(): 2 print("呵呵") 3 prin ...

  7. 【Python】【容器 | 迭代对象 | 迭代器 | 生成器 | 生成器表达式 | 协程 | 期物 | 任务】...

    Python 的 asyncio 类似于 C++ 的 Boost.Asio. 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知. Asyn ...

  8. python值函数名的使用以及闭包,迭代器详解

    一.函数名的运用 函数名就是一个变量名,但它是一个特殊的变量名,是一个后面加括号可以执行函数的变量名. def func():print("我是一个小小的函数") a = func ...

  9. python定义函数名typo错误_17个新手常见Python运行时错误

    当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在if,elif,else,for,while,cl ...

  10. Python要想学得好,【容器/可迭代对象/迭代器/生成器】少不了,稳扎稳打学Python!

    在刚开始学Python的时候,是不是经常会听到大佬们在讲容器.可迭代对象.迭代器.生成器.列表/集合/字典推导式等等众多概念,其实这不是大佬们没事就搁那扯专业术语来装B,而是这些东西都得要明白的,光知 ...

最新文章

  1. Linux字符设备驱动结构
  2. SQL-语句实现九九乘法表
  3. (c语言)和与积的运算第二篇
  4. acdsee扫描没有图像_详解CT图像常见伪影成因及解决方法
  5. Win 10 或可以运行安卓APP
  6. linux重启网络服务_vm上linux虚拟机NAT模式配置
  7. JCG新年献礼,JHR-N825R给力上市
  8. 鸿蒙app迁移,余承东宣布:明年3月P40首发鸿蒙系统!主流App将迁移鸿蒙
  9. CSS原理与CSS经验分享
  10. 图像分割(三)--Grab Cut
  11. Linux Mint,Ubuntu 18 ,Deepin15.7 安装mysql 没有提示输入密码,修改root用户密码过程...
  12. 201111-W-网络技术-基础理论与应用说明
  13. 一系列自动化测试的开源项目介绍
  14. 地理空间数据云 Landsat 8 OLI_TIRS 影像数据下载详解
  15. oracle 常用调优方法
  16. chrome浏览器升级导致无法手动设置cookie,设置无法保存
  17. unity制作手机h5小游戏,发布webgl后我的修改
  18. css border:solid实线,dashed虚线;dotted点状,,double双线
  19. 以太网的网络电缆线被拔出怎么解决
  20. deepin更新linux内核,修改deepin启动内核

热门文章

  1. 外包被裁能要n+1吗?签约软通动力,在滴滴工作,滴滴裁员,我要n+1,软通不认!...
  2. Codeforces Round #116 C.Letter
  3. 老男孩mysql 百度云_老男孩MySQL DBA 6期
  4. linux中IGV的运行,科学网—使用UCSC和IGV查看reads在基因组上分布情况 - 熊朝亮的博文...
  5. C语言——求n天后的日期
  6. Hifn容量优化卡成功支持Bull公司备份方案
  7. shiny 服务器未响应,shiny-server 安装过程出现问题总结
  8. Date:2021.3.11 ---- 树莓派4B raspbian/ Debian + Apache2 + php7 + Mariadb/Mysql +owncloud搭建私有云NAS
  9. 手机计算机怎样可以整分数计算,分数计算器设计
  10. GetComponentsInChildren 不能获取enabled = false的子物体