傻大方


首页 > 潮·科技 > >

如何写出更具有Python风格的代码,五分钟教会你( 三 )



按关键词阅读:

可以看出 , 迭代器写起来稍麻烦 , 当也更为灵活 , 比如你想提供一个 current 方法时 , 可以直接添加到 Squares 类中:
def current(self):return self.start从上述可以看出 , 迭代器并没有保存 a 到 b 之间的所有值 , 所有并不消耗过多的内存 , 这一点也可以自行测试 , 代码如下:
>>> from collections.abc import Iterator>>> from sys import getsizeof>>> a = [i for i in range(1001)]>>> print(type(a))>>> print(getsizeof(a))9016>>>>>> b = iter(a)>>> print(type(b))>>> print(isinstance(b,Iterator))True>>> print(getsizeof(b))48>>> c = (i for i in range(1001))>>> print(getsizeof(b))48>>> type(c)>>> type(b)可以看出 b 是 iterator , c 是 generator , 它们占用的内存大小是一样的 。
六、善用 itertoolsitertools 模块标准化了一个快速、高效利用内存的核心工具集 , 这些工具本身或组合都很有用 。 它们一起形成了“迭代器代数” , 这使得在纯 Python 中有可以创建简洁又高效的专用工具 。 比如 , 如果你想要字符串中所有字符的组合或列表中数字的所有组合 , 则只需编写
from itertools import combinationsnames = 'ABC'for combination in combinations(names, 2):print(combination)''' Output -('A', 'B')('A', 'C')('B', 'C')'''这是一个值得经常使用的标准库 , 更多详细功能请参考官方文档:[1]
七、善用 collections这又是一个值得使用的标准库 collections , 它提供替代内置的数据类型的多个容器 , 如 defaultdict、OrderedDict、namedtuple、Counter、deque 等 , 非常使用 , 而且比自己实现要安全稳定的多 。 比如:
# frequency of all characters in a string in sorted orderfrom collections import (OrderedDict, Counter)string = 'abcbcaaba'freq = Counter(string)freq_sorted = OrderedDict(freq.most_common())for key, val in freq_sorted.items():print(key, val)''' Output -('a', 4)('b', 3)('c', 2)'''不多说了 , 看官方文档:[2]
八、不要过度使用类不要过度使用类 。 坚持用 Java 和 C ++ 的程序员会经常使用类 , 但是在使用 Python 时 , 可以在函数和模块的帮助下复用代码 。 除非绝对需要 , 否则不必创建类 。
本文讲述类 8 个让你写出更好 Python 代码的方法 , 希望对你有所帮助 。


稿源:(未知)

【傻大方】网址:http://www.shadafang.com/c/111J2N0H020.html

标题:如何写出更具有Python风格的代码,五分钟教会你( 三 )


上一篇:从安装软件开始教你爬取微博上万条评论数据!这都还学不会吗?

下一篇:NFS2020|薪人薪事创始人&CEO常兴龙确认出席NFS2020年度CEO峰会暨猎云网创投颁奖盛典