网易首页 > 网易号 > 正文 申请入驻

用这个 Python 3.7 的特性来切片无限生成器 | Linux 中国

0
分享至

导读:了解更多关于这个和其他两个未被充分利用但仍然有用的 Python 特性。                   

本文字数:2294,阅读时长大约: 2分钟

https://linux.cn/article-13459-1.html
作者:Moshe Zadka
译者:geekpi

这是关于 Python 3.x 首发特性系列文章的第八篇。 于 2018 年首次发布,尽管它已经发布了几年,但它引入的许多特性都未被充分利用,而且相当酷。下面是其中的三个。

注解推迟评估

在 Python 3.7 中,只要激活了正确的 __future__ 标志,注解在运行时就不会被评估:

  1. from __future__ import annotations

  2. def another_brick(wall: List[Brick], brick: Brick) -> Education:

  3. pass

  1. another_brick.__annotations__

  1. {'wall': 'List[Brick]', 'brick': 'Brick', 'return': 'Education'}

它使递归类型(指向自己的类)和其他有趣的事情成为了可能。然而,这意味着如果你想做自己的类型分析,你需要明确地使用 ast

  1. import ast

  2. raw_type = another_brick.__annotations__['wall']

  3. [parsed_type] = ast.parse(raw_type).body

  1. subscript = parsed_type.value

  2. f"{subscript.value.id}[{subscript.slice.id}]"

  1. 'List[Brick]'

itertools.islice 支持 index

Python 中的序列切片长期以来一直接受各种 类 int 对象(具有 __index__() 的对象)作为有效的切片部分。然而,直到 Python 3.7,itertools.islice,即核心 Python 中对无限生成器进行切片的唯一方法,才获得了这种支持。

例如,现在可以用 numpy.short 大小的整数来切片无限生成器:

  1. import numpy

  2. short_1 = numpy.short(1)

  3. short_3 = numpy.short(3)

  4. short_1, type(short_1)

  1. (1, numpy.int16)

  1. import itertools

  2. list(itertools.islice(itertools.count(), short_1, short_3))

  1. [1, 2]

functools.singledispatch() 注解注册

如果你认为 已经很酷了,你错了。现在可以根据注解来注册了:

  1. import attr

  2. import math

  3. from functools import singledispatch

  4. @attr.s(auto_attribs=True, frozen=True)

  5. class Circle:

  6. radius: float

  7. @attr.s(auto_attribs=True, frozen=True)

  8. class Square:

  9. side: float

  10. @singledispatch

  11. def get_area(shape):

  12. raise NotImplementedError("cannot calculate area for unknown shape",

  13. shape)

  14. @get_area.register

  15. def _get_area_square(shape: Square):

  16. return shape.side ** 2

  17. @get_area.register

  18. def _get_area_circle(shape: Circle):

  19. return math.pi * (shape.radius ** 2)

  20. get_area(Circle(1)), get_area(Square(1))

  1. (3.141592653589793, 1)

欢迎来到 2017 年

Python 3.7 大约是四年前发布的,但是在这个版本中首次出现的一些特性非常酷,而且没有得到充分利用。如果你还没使用,那么将它们添加到你的工具箱中。

via:

作者: 选题: 译者: 校对:

本文由 原创编译, 荣誉推出

欢迎遵照 CC-BY-NC-SA 协议规定转载,

如需转载,请在文章下留言 “ 转载:公众号名称”,

我们将为您添加白名单,授权“ 转载文章时可以修改”。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
不是周琦,不是张镇麟,中国男篮最新队长曝光,辽宁队球迷破防了

不是周琦,不是张镇麟,中国男篮最新队长曝光,辽宁队球迷破防了

宗介说体育
2024-06-15 14:03:02
他是李克农的女婿,48岁担任陕西省省长,62岁担任云南省委书记

他是李克农的女婿,48岁担任陕西省省长,62岁担任云南省委书记

悟空谈历史
2024-06-12 23:08:20
官方回应:他俩均已离婚!

官方回应:他俩均已离婚!

沈阳地铁第一时间
2024-06-15 13:16:10
G7炒作涉华议题“温差明显”

G7炒作涉华议题“温差明显”

环球时报国际
2024-06-15 07:16:28
乒乓爆大冷:11-0诞生,2大世界冠军+日本主力0-3出局,韩国惨败

乒乓爆大冷:11-0诞生,2大世界冠军+日本主力0-3出局,韩国惨败

知轩体育
2024-06-15 12:02:54
你什么时候意识到自己没见过世面?网友:体制内,不知道水牌是啥

你什么时候意识到自己没见过世面?网友:体制内,不知道水牌是啥

热闹的河马
2024-06-14 10:46:15
舔狗校长被家族流放了

舔狗校长被家族流放了

毒舌扒姨太
2024-06-15 22:07:19
见亲妈睡在沙发,妻子怒扇丈夫耳光,可看到主卧走出的人她愣住了

见亲妈睡在沙发,妻子怒扇丈夫耳光,可看到主卧走出的人她愣住了

吉祥情感屋
2024-06-11 11:27:34
农村留守妇女的性生活到底有多尴尬?

农村留守妇女的性生活到底有多尴尬?

书画艺术收藏
2024-03-06 19:00:05
泰国足协主席抱怨:中韩在踢默契球,这对泰国不公平,球迷炸锅

泰国足协主席抱怨:中韩在踢默契球,这对泰国不公平,球迷炸锅

刺头体育
2024-06-15 09:47:57
周六解析两场欧洲杯 匈牙利VS瑞士 意大利VS阿尔巴尼

周六解析两场欧洲杯 匈牙利VS瑞士 意大利VS阿尔巴尼

网易红彩
2024-06-15 14:33:23
三十岁时就很红,低调嫁乒乓王子,如今《玫瑰的故事》成最美妈妈

三十岁时就很红,低调嫁乒乓王子,如今《玫瑰的故事》成最美妈妈

校长侃财
2024-06-14 13:15:46
玫瑰的故事:本以为黄磊塞进“关系户”就够了,结果还有双料影后

玫瑰的故事:本以为黄磊塞进“关系户”就够了,结果还有双料影后

综艺拼盘汇
2024-06-16 00:19:22
中科院已发表颠覆性研究:尼古丁可延缓衰老!吸烟或是长寿密码?

中科院已发表颠覆性研究:尼古丁可延缓衰老!吸烟或是长寿密码?

蜉蝣说
2024-06-15 21:38:43
正部级“老虎”董云虎落马,背后的神秘“夫人”是她

正部级“老虎”董云虎落马,背后的神秘“夫人”是她

天闻地知
2024-05-27 14:13:56
唐朝古籍里发现月亮的离奇记载:表面凹凸不平,有8万名专人维修

唐朝古籍里发现月亮的离奇记载:表面凹凸不平,有8万名专人维修

文史道
2024-06-14 06:45:03
眼看来中国的外国游客越来越多,欧美开始有些不淡定了

眼看来中国的外国游客越来越多,欧美开始有些不淡定了

布拉旅游说
2024-06-15 19:17:01
经济的收缩期:三根稻草压垮了多少小老板?

经济的收缩期:三根稻草压垮了多少小老板?

永不出场的戈多
2024-06-05 17:17:53
收视率全国第一,《新闻联播》花24秒强推,央视这部黑马大剧炸了

收视率全国第一,《新闻联播》花24秒强推,央视这部黑马大剧炸了

糊咖娱乐
2024-06-12 11:39:56
外蒙古,已经沦为韩国老男人们的“海外青楼”?

外蒙古,已经沦为韩国老男人们的“海外青楼”?

乌鸦校尉
2024-05-31 10:32:03
2024-06-16 04:16:49
Linux
Linux
Linux 中国开源社区
8016文章数 73123关注度
往期回顾 全部

科技要闻

TikTok开始找退路了?

头条要闻

欧洲杯-亚马尔创纪录卡瓦哈尔首球 西班牙3-0克罗地亚

头条要闻

欧洲杯-亚马尔创纪录卡瓦哈尔首球 西班牙3-0克罗地亚

体育要闻

莱夫利,让困难为我让路

娱乐要闻

江宏杰秀儿女刺青,不怕刺激福原爱?

财经要闻

新情况!高层对人民币的态度180°转弯

汽车要闻

东风奕派eπ008售21.66万元 冰箱彩电都配齐

态度原创

房产
健康
家居
旅游
本地

房产要闻

万华对面!海口今年首宗超百亩宅地,重磅挂出!

晚餐不吃or吃七分饱,哪种更减肥?

家居要闻

空谷来音 朴素留白的侘寂之美

旅游要闻

如何文艺消夏?乌镇10大活动开启古镇消夏节

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

无障碍浏览 进入关怀版