Python培训
400-996-5531
Python有着丰富精巧的功能和技巧,会让你惊叹“哇!Python这么酷”。
我们选取了一些我们很喜欢的功能并在下文中依次展示。希望你能从中学习到一些东西,并感到吃惊“我学完才知道这样写代码更整洁”。
生成器生成器是产生一个值的序列的对象。它可以用作迭代器,也就是说它可以用于for语句,或者用于next函数中来得到下一个值。但是你只能迭代一次值。
可以通过一个使用yield关键字来生成值的函数创建生成器。当调用生成器函数时,将创建一个生成器对象。
yield操作符
对于简单的情况,可以使用生成器表达式创建生成器。与列表相反,值将在运行中计算,而不是一次性全部计算并存储在内存中。
生成器表达式
Collections模块
collections是标准库中实现替代容器数据类型的一个模块。
例如,一个Counter是一个集合,其中元素被存储为字典的键,而它们的计数被存储为字典的值:
计数器
defaultdict是dict的一个子类,它允许调用时传入一个工厂函数,这个函数在键值缺失时自动生成新的值。
defaultdict
defaultdict还可用于创建一个树型数据结构。
树
Itertools模块
itertools是标准库中的一个模块,可用于创建迭代器以实现有效的循环。
例如,permutations会生成一组序列的所有可能排列:
permutations
类似地,combinations会根据所选择的项目个数n,生成一组序列中的所有可能的n项的组合方式,使得(不同于permutations)顺序无关紧要:
combinations
itertools还包含其他实用函数,例如chain,它采用迭代方式,创建一个新的迭代器,由给定的迭代顺序返回元素形成单个序列:
chain
Packing/Unpacking
*运算符,被称为拆包或splat运算符,允许非常方便的从列表或元组到独立的变量或参数的转换,反之亦可。
扩展可迭代序列的拆包
当你的函数的参数已经在列表或元组中,可对其拆包。如果是列表你可以用*args来拆包,如果是字典就用**kwargs。
Unpacking参数
反过来也是可以的,你可以定义一个函数,将单个tuple里的所有参数和单个dict里的所有的关键字参数组包。
关键字参数
装饰器
装饰器是一个接受函数作为参数并返回函数的函数。
例如,在下面的代码中,cache函数用作装饰器来记住已经计算出的斐波那契数:
装饰器
functools模块提供了几个装饰器,例如lru_cache,它可以实现我们刚刚做的:存储。当使用相同的参数调用给定的函数时,它可以保存最近的调用来节省时间:
Iru_cache
上下文管理器
上下文管理器主要用于正确管理资源。上下文管理器最常用的用途是通过语句with open("workfile", "r") as f:打开文件。然而,大多数开发人员不知道其内部是如何运作的,也不知道如何自己创建。
实际上,一个上下文管理器只是一个实现方法__enter__和__exit__的类。
上下文管理器
简单使用时,也可以使用带有yield关键字的生成器函数,也可使用@contextmanager装饰器。
使用@contextmanager的上下文管理器
希望您喜欢我们在Python 3中选择实现的这几个最佳功能,请在论坛或Github上踊跃分享您的反馈:)
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved