请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我没弄明白使用迭代器好在哪里了

老师的代码的核心机制就在于next函数的迭代调用,那我用for直接调用城市列表不就好了吗。。

我就直接贴自己的代码了

import requests

def getweather(city):
       r = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=' + city)
       data = r.json()['data']['forecast'][0]
       return print('%s: %s,%s' % (city, data['low'], data['high']))

l=['北京','上海','石家庄','厦门','镇江','南京','西安','海南','保定','天津']
for x in l:
   getweather(x)

这段代码的输出和老师的效果一模一样

难道是使用迭代器机器运算效率更高?

都是单线程,也不是协程,不用考虑异步,那为什么要用迭代器。。


正在回答 回答被采纳积分+3

1回答

程序员硕 2017-06-03 06:16:18

延迟计算, 用一个算一个, 而不是一口气全部计算出来, 节省内存. 

2 回复 有任何疑惑可以回复我~
  • 提问者 ShiveryMoon #1
    老师,我的理解是这样的:
    for循环的机制,就是先调用可迭代对象的__iter__,把它变成迭代器,再调用迭代器的next。
    所以只要是for循环,就是使用了迭代器。
    而本节课中,我们只是重写了__iter__和next两个函数,让迭代器能够产生一些我们想要的额外效果。
    所以本节课的内容,其实是“如何理解迭代器的实现过程并自定义迭代器”吧
    回复 有任何疑惑可以回复我~ 2017-06-03 09:19:07
  • 提问者 ShiveryMoon #2
    可能我有点钻牛角尖了。。
    回复 有任何疑惑可以回复我~ 2017-06-03 10:39:02
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信