python葵花宝典第12式--函数名、闭包、迭代器

python葵花宝典第12式–函数名、闭包、迭代器

12.1 函数名的应用

  • 函数名就是一个变量
  • 函数名可以作为参数传递给函数
    招式1:
def fun1():    
	print("我是fun1")
def fun2(fn):
   print("我是fun2")
fun2(fun1)
  • 函数名可以作为函数的返回值
    招式2:
def fun():
print("我是fun")    
a = 10
    def inner():
        print("我是inner")
    return inner
ret = fun()
ret()
fun()()
  • 可以作为列表中的元素进行存储
    招式3:
def fun1():   
 pass
def fun2():
    pass
lst = [fun1,fun2]
for fun in lst:
    fun()

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

作用:

  • (1)可以保证你的变量不受侵害
  • (2)可以让一个变量常驻内存
    招式4:
		def outer():
		    a = 10 #对外界是不开放的
		    def inner():
		        print(a)
		    inner()
		outer()

招式5:
查看爬虫程序是否是闭包:

  • 如果打印的是None,不是闭包
  • 如果打印的是地址,是闭包
#简易爬虫
from urllib.request import urlopen
def outer():
    s = urlopen("http://www.xiaomi.com/").read()
    def getContent():
        return s
    return getContent
pa = outer()
ret = pa()
print(ret)

12.3迭代器
特点:
(1)只能向前下一个
(2)几乎不占用内存,节约内存
(3)for循环
(4)惰性机制(面试题,难度高)

  • 所有带__iter__可以使用for循环的,可迭代对象
  • 可迭代对象可以使用__iter__()来获取到迭代器
  • 迭代器里面有__next__(),可以获取内容
    招式6
s = "小可爱"
it = s.__iter__()
print(dir(it))
print(it.__next__())
print(it.__next__())
print(it.__next__())

结果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值