Python 3.x 有 LINQ 吗?
这个东西存在吗?这里有一个链接 http://github.com/heynemann/pynq ,不过它只适用于2.5版本。
3 个回答
0
微软有一个官方的叫做 wip 的 Rx 实现,专门为 Python 提供,名字叫 Rx.py。这个项目里面有一个基本的 LINQ-to-objects(也就是 IEnumerable)的实现,你可以在这里查看:http://rxpy.codeplex.com/SourceControl/latest#rx/internal/enumerable.py。
这个项目是针对 Python 3 的。
3
你可以试试asq,这是一个完全模仿LINQ的实现,适用于Python 2(2.6和2.7版本)以及所有版本的Python 3。你可以在asq
中对任何Python可迭代对象进行查询,并且它的查询方式和LINQ一样,支持延迟计算。这款工具的实现非常稳固,测试覆盖率达到100%,而且文档也很全面。它的接口遵循PEP8标准,这样就能很好地和其他Python代码配合使用,同时还提供了一些额外的功能来增强与Python的集成。最后,1.0版本还支持并行查询执行的原型。
完全透明:我就是asq
的作者。
1
正如SilentGhost所提到的,运行 2to3
工具可以发现,将代码迁移到python 3.x其实只需要做很少的改动。大致来说,这些改动包括:
- 把调用
unicode()
的地方改成str()
- 去掉unicode字符串常量前面的'u'
- 把
dict.has_key()
改成dict.in
- 把
cStringIO
的导入改成io
- 把
StringIO.next
改成StringIO.__next__
我本来想给你引用所有内容,但输出格式在StackOverflow上可能不太好看。