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

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

1、函数名的应用:

  函数的命明规范和变量是一样的

  函数名即变量名

  应用如下:

1         可以作为列表中的元素进行存储 2         def func1(): 3             pass 4         def func2(): 5             pass 6         lst = [func1,func2] 7         for el in lst: 8             el() 9         可以作为参数传递给函数10         def func():11             pass12         def proxy(fn):13             fn()14         proxy(func)15         可以作为函数的返回值16         def func():17             def inner():18                 pass19             return inner20         func()()

 

2、闭包

  闭包:在内层函数中访问外层函数的局部变量

  作用:

    1、可以保护变量不受外界影响

    2、可以让变量常驻内存,不会被释放。

  写法:    

1             def outer(): 2                 a = 10 3                 def inner(): 4                     print(a) 5                 return inner 6             正确使用姿势: 7                 def outer(): 8                     a = 10 # 假设是一个很耗时的东西 9                     def inner():10                         print(a)11                     return inner12                 outer()()13                 outer()()   ---错误使用姿势14                 --------------15                 ret = outer()16                 ret()17                 ret()    -----正确使用姿势

 

3、迭代器

  for循环的本质就是迭代器。

  可以用来遍历列表,字符串,元祖...可迭代对象

  可迭代对象:Iterale,里面有__iter__(),没有__next__()

  迭代器:Iterator,里面有__iter__(),还有__next__()

  迭代器特点:

    1、只能向前

    2、惰性机制

    3、省内存

  for循环的内部机制(即迭代器执行机制)

1             1、首先获取到迭代器 2             2、使用while循环获取数据 3             3、it.__next__()来获取数据 4             4、处理异常try:xxx except StopIteration: 5  6             it = xx.__iter__() 7             while 1: 8                 try: 9                     data = it.__next__()10                     xxxxxx11                 except StopIteration:12                     break

 

转载于:https://www.cnblogs.com/cbslock/p/11149501.html

你可能感兴趣的文章
cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题
查看>>
存储(硬件方面的一些基本术语)
查看>>
观察者模式
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
Win磁盘MBR转换为GUID
查看>>
大家在做.NET B/S项目的时候多用什么设技术啊?
查看>>
Java SE和Java EE应用的性能调优
查看>>
Android设计模式系列--原型模式
查看>>
免费的论文查重网站
查看>>
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Eclipse相关集锦
查看>>
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
noip模拟赛 党
查看>>