Python随身听-全球技术精选-20191230
Hey,你好,欢迎来到 Python 随身听周一的《全球技术精选》。
这一次 DE8UG 给你带来的是:
- 四款新的值得关注的代码库
- 两款需要长期持有的代码库
四款新的值得关注的代码库
Typical: Fast, simple, & correct data-validation using Python 3 typing.
直接通过装饰器@typic.al,然后自动根据 Python3 的注解功能自动判断输入参数类型。
更多查看:https://github.com/seandstewart/typical/
示例:
>>> import typic
>>>
>>> @typic.al
>>> def multi(a: int, b: int):
... return a * b
...
>>> multi('2', '3')
6
>>> class DuckRegistry:
... """A Registry for all the ducks"""
...
... @typic.al
... def __init__(self, *duck: Duck):
... self._reg = {x.name: x for x in duck}
...
... @typic.al
... def add(self, duck: Duck):
... self._reg[duck.name] = duck
...
... @typic.al
... def find(self, name: str):
... """Try to find a duck by its name. Otherwise, try with type."""
... if name not in self._reg:
... matches = [x for x in self._reg.values() if x.type == name]
... if matches:
... return matches[-1] if len(matches) == 1 else matches
... return self._reg[name]
...
>>> registry = DuckRegistry({'type': 'black', 'name': 'Daffy'})
>>> registry.find('Daffy')
Duck(type=<DuckType.BLK: 'black'>, name='Daffy')
>>> registry.add({'type': 'white', 'name': 'Donald'})
>>> registry.find('Donald')
Duck(type=<DuckType.WHT: 'white'>, name='Donald')
>>> registry.add({'type': 'goose', 'name': 'Maynard'})
Traceback (most recent call last):
...
ValueError: 'goose' is not a valid DuckType
pylightxl:A light weight Microsoft Excel File reader.
一个新的轻量级 excel 读写工具。因为太新了,所以 write 的功能还在路上。。。
目前特点如下:
- Zero non-standard library dependencies (standard libs used: zipfile, re, os, sys).
No compatibility/version control issues. - Single source code that supports both Python37 and Python27. The light weight library is only 3 source files that can be easily copied directly into a project for those that have installation/download restrictions. In addition the library’s size and zero dependency makes pyinstaller compilation small and easy!
- 100% test-driven development for highest reliability/maintainability with 100% coverage on all supported versions
- API aimed to be user friendly, intuitive and to the point with no bells and whistles. Structure: database > worksheet > indexing
example: db.ws(‘Sheet1’).index(row=1,col=2) or db.ws(‘Sheet1’).address(address='B1)
更多:
https://pylightxl.readthedocs.io/en/latest/
ffmpeg-python:Python bindings for FFmpeg - with complex filtering support
Python 让使用 ffmpeg 处理视频文件变得更简单,比如把
ffmpeg -i input.mp4 -i overlay.png -filter_complex "[0]trim=start_frame=10:end_frame=20[v0];\
[0]trim=start_frame=30:end_frame=40[v1];[v0][v1]concat=n=2[v2];[1]hflip[v3];\
[v2][v3]overlay=eof_action=repeat[v4];[v4]drawbox=50:50:120:120:red:t=5[v5]"\
-map [v5] output.mp4
变为:
import ffmpeg
in_file = ffmpeg.input('input.mp4')
overlay_file = ffmpeg.input('overlay.png')
(
ffmpeg
.concat(
in_file.trim(start_frame=10, end_frame=20),
in_file.trim(start_frame=30, end_frame=40),
)
.overlay(overlay_file.hflip())
.drawbox(50, 50, 120, 120, color='red', thickness=5)
.output('out.mp4')
.run()
)
python-small-examples
Python 有趣的小例子一网打尽。Python 基础、Python 坑点、Python 字符串和正则、Python 绘图、Python 日期和文件、Web 开发、数据科学、机器学习、深度学习、TensorFlow、Pytorch,一切都是简单易懂的小例子。
https://github.com/jackzhenguo/python-small-examples
两款需要长期持有的代码库
下面这两个库请一定收藏并经常查看。对工作,面试都非常重要。
interview_internal_reference
鲜活的面试题,2019 年最新总结,阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。
https://github.com/0voice/interview_internal_reference
system-design-primer
项目目的:
- 学习如何设计大型系统。
- 为系统设计的面试做准备。
学习如何设计可扩展的系统将会有助于你成为一个更好的工程师。系统设计是一个很宽泛的话题。在互联网上,关于系统设计原则的资源也是多如牛毛。
这个仓库就是这些资源的组织收集,它可以帮助你学习如何构建可扩展的系统。
这是一个不断更新的开源项目的初期的版本。特别是中文版很多地方没翻译好(DE8UG 注),建议还是看英文版,因为图很多的。
https://github.com/donnemartin/system-design-primer
下一篇: 头文件的用法及注意事项