天问

Python 3.7发布,引入多项新功能!

众所周知,目前使用的都是Python2.7,python3.6。python语法不是很严谨,导致版本很多,各种包很混乱。而目前社区推出python3.7最新版本。有一些什么新功能呢?

Python 3.7 中有许多新东西:

  • 各种字符集的改进

  • 对注释的推迟评估

  • 以及对 dataclass 的支持

什么是数据类

大多数 Python 开发人员将编写很多类,如下所示:

class MyClass:
    def __init__(self, var_a, var_b):
        self.var_a = var_a
        self.var_b = var_b

数据类通过自动生成 dunder 方法来。例如,一个 __init__ 接受这些参数并将其分配给自己。之前的小例子可以重写为:

@dataclass
class MyClass:
    var_a: str
    var_b: str

关键的区别在于类型提示:它们允许你标记某个变量 _should_ 是什么类型。在运行时,不检查这些类型,但可以使用 PyCharm 或类似 mypy 的命令行工具来静态检查代码。

星球大战 API(Star Wars API)

如果有人用星球大战电影的数据创建了 REST API 时,它的粉丝群肯定会兴奋不已。而实际上已经有人这么做了,他不仅创建了 Star Wars API,还为它创建了 Python 封装库。

而我们也可以编写自己的封装(Wrapper)。

我们可以使用请求库从星球大战 API 获取资源:

response = requests.get('https://swapi.co/api/films/1/')

此端点(与所有 swapi 端点一样)以 JSON 消息进行响应。 

dictionary = response.json()

我们在 dictionary 中拥有自己的数据:

{
 'characters': ['https://swapi.co/api/people/1/',
                … ],
 'created': '2014-12-10T14:23:31.880000Z',
 'director': 'George Lucas',
 'edited': '2015-04-11T09:46:52.774897Z',
 'episode_id': 4,
 'opening_crawl': 'It is a period of civil war.rn … ',
 'planets': ['https://swapi.co/api/planets/2/',
     ...],
 'producer': 'Gary Kurtz, Rick McCallum',
 'release_date': '1977-05-25',
 'species': ['https://swapi.co/api/species/5/',
                 ...],
 'starships': ['https://swapi.co/api/starships/2/',
                   ...],
 'title': 'A New Hope',
 'url': 'https://swapi.co/api/films/1/',
 'vehicles': ['https://swapi.co/api/vehicles/4/',
                  ...]
}

更多详细说明请查看:

https://blog.jetbrains.com/pycharm/2018/04/python-37-introducing-data-class/

博客地址:http://blog.yoqi.me/archives/12926
扫我捐助哦
喜欢 0

这篇文章还没有评论

发表评论