[Python高效编程]

来源:互联网 发布:linux tmp目录作用 编辑:程序博客网 时间:2024/06/07 17:24

开发环境

  1. Python版本: python3.6
  2. 调试工具:pycharm 2017.1.3
  3. 电脑系统:Windows 10 64位系统
  4. Python库:requests,collections

获取天气信息

import requestsdef getWeather(city):    r = requests.get("http://wthrcdn.etouch.cn/weather_mini?city=" + city)    data = r.json()['data']['forecast'][0]    return '{0}: {1}, {2}'.format(city, data['low'], data['high'])print(getWeather('武汉'))
武汉: 低温 4℃, 高温 15℃

使用可迭代对象和迭代器输出信息

from collections import Iterable, Iteratorimport requestsclass WeatherIterator(Iterator):    # 继承可迭代的对象    def __init__(self, cities):        self.cities = cities        self.index = 0    def getWeather(self, city):        r = requests.get("http://wthrcdn.etouch.cn/weather_mini?city=" + city)        data = r.json()['data']['forecast'][0]        return '{0}: {1}, {2}'.format(city, data['low'], data['high'])    def __next__(self):        if self.index == len(self.cities):            raise StopIteration        city = self.cities[self.index]        self.index += 1        return self.getWeather(city)class WeatherIterable(Iterable):    # 继承迭代器    def __init__(self, cities):        self.cities = cities    def __iter__(self):        return WeatherIterator(self.cities)for x in WeatherIterable(['北京', '上海', '武汉', '深圳']):    print(x)
北京: 低温 -4℃, 高温 7℃上海: 低温 5℃, 高温 13℃武汉: 低温 4℃, 高温 15℃深圳: 低温 13℃, 高温 19℃

代码优化

上述的代码还是不够简洁,还可以进一步优化,下面重写代码

import requestsclass WeatherOutput:    """输出天气信息"""    def __init__(self, cities):        self.cities = cities        self.index = 0    def getWeather(self, city):        try:            r = requests.get("http://wthrcdn.etouch.cn/weather_mini?city=" + city)            data = r.json()['data']['forecast'][0]            return '{0}: {1}, {2}'.format(city, data['low'], data['high'])        except:            print("获取天气信息失败")    def __iter__(self):        return self    def __next__(self):        if self.index == len(self.cities):            raise StopIteration        city = self.cities[self.index]        self.index += 1        return self.getWeather(city)for x in WeatherOutput(['北京', '上海', '武汉', '深圳']):    print(x)
北京: 低温 -4℃, 高温 7℃上海: 低温 8℃, 高温 14℃武汉: 低温 4℃, 高温 17℃深圳: 低温 15℃, 高温 19℃

如果想知道原理,可以参考这篇博客:

http://blog.csdn.net/lanhaixuanvv/article/details/78503325

原创粉丝点击