搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 达内Python人工智能 > 其他语言无法比拟的6个Python特性

其他语言无法比拟的6个Python特性

达内Python人工智能 2017-10-30

 Tips:

Python免费课程报名中,点击文末“阅读原文”快速抢!

Python有着丰富精巧的功能和技巧,会让你惊叹“哇!Python这么酷”。

我们选取了一些我们很喜欢的功能并在下文中依次展示。希望你能从中学习到一些东西,并感到吃惊“我学完才知道这样写代码更整洁”。

  • 生成器

  • Collections模块

  • Itertools模块

  • Packing/Unpacking

  • 装饰器

  • 上下文管理器

源代码在GitHub(https://github.com/CodinGame/advanced-python-features-playground )上,欢迎提出想法来改进。

生成器

生成器是产生一个值的序列的对象。它可以用作迭代器,也就是说它可以用于for语句,或者用于next函数中来得到下一个值。但是你只能迭代一次值。

可以通过一个使用yield关键字来生成值的函数创建生成器。当调用生成器函数时,将创建一个生成器对象。

yield操作符

其他语言无法比拟的6个Python特性

对于简单的情况,可以使用生成器表达式创建生成器。与列表相反,值将在运行中计算,而不是一次性全部计算并存储在内存中。

生成器表达式

其他语言无法比拟的6个Python特性

Collections模块

collections是标准库中实现替代容器数据类型的一个模块。

例如,一个Counter是一个集合,其中元素被存储为字典的键,而它们的计数被存储为字典的值:

计数器

其他语言无法比拟的6个Python特性

defaultdict是dict的一个子类,它允许调用时传入一个工厂函数,这个函数在键值缺失时自动生成新的值。

defaultdict

其他语言无法比拟的6个Python特性

defaultdict还可用于创建一个树型数据结构。

其他语言无法比拟的6个Python特性

Itertools模块

itertools是标准库中的一个模块,可用于创建迭代器以实现有效的循环。

例如,permutations会生成一组序列的所有可能排列:

permutations

其他语言无法比拟的6个Python特性

类似地,combinations会根据所选择的项目个数n,生成一组序列中的所有可能的n项的组合方式,使得(不同于permutations)顺序无关紧要:

combinations

其他语言无法比拟的6个Python特性

itertools还包含其他实用函数,例如chain,它采用迭代方式,创建一个新的迭代器,由给定的迭代顺序返回元素形成单个序列:

chain

其他语言无法比拟的6个Python特性

Packing/Unpacking

*运算符,被称为拆包或splat运算符,允许非常方便的从列表或元组到独立的变量或参数的转换,反之亦可。

扩展可迭代序列的拆包

其他语言无法比拟的6个Python特性

当你的函数的参数已经在列表或元组中,可对其拆包。如果是列表你可以用*args来拆包,如果是字典就用**kwargs。

Unpacking参数

其他语言无法比拟的6个Python特性

反过来也是可以的,你可以定义一个函数,将单个tuple里的所有参数和单个dict里的所有的关键字参数组包。

关键字参数

其他语言无法比拟的6个Python特性

装饰器

装饰器是一个接受函数作为参数并返回函数的函数。

例如,在下面的代码中,cache函数用作装饰器来记住已经计算出的斐波那契数:

装饰器

其他语言无法比拟的6个Python特性

functools模块提供了几个装饰器,例如lru_cache,它可以实现我们刚刚做的:存储。当使用相同的参数调用给定的函数时,它可以保存最近的调用来节省时间:

Iru_cache

其他语言无法比拟的6个Python特性

上下文管理器

上下文管理器主要用于正确管理资源。上下文管理器最常用的用途是通过语句with open("workfile", "r") as f:打开文件。然而,大多数开发人员不知道其内部是如何运作的,也不知道如何自己创建。

实际上,一个上下文管理器只是一个实现方法__enter__和__exit__的类。

上下文管理器

其他语言无法比拟的6个Python特性

简单使用时,也可以使用带有yield关键字的生成器函数,也可使用@contextmanager装饰器。

使用@contextmanager的上下文管理器


*   版权声明:转载文章和图片均来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。 

- 福利 -

现在人工智能爆发,Python是一门脚本语言,它更适合去做人工智能这个领域,在人工智能上使用Python比其他编程语言有更大的优势。

学习一门python语言的前景越来越好,如果想在IT领域发展的话,可以报名达内Python+人工智能课程,点击页面底部“阅读原文”预约免费课程。

回复「课程」查看Python课程详情

回复「教程」下载《Python从入门到精通》60集视频

回复「干货」下载《Python编程入门》电子书

回复「入门」下载《简明Python教程》电子书

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《其他语言无法比拟的6个Python特性》的版权归原作者「Python人工智能」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注Python人工智能微信公众号

Python人工智能微信公众号:python009

Python人工智能

手机扫描上方二维码即可关注Python人工智能微信公众号

Python人工智能最新文章

精品公众号随机推荐