内容简介:MacroPy3 is tested to run on
Welcome to MacroPy3’s documentation!
MacroPy3 is a port of the original MacroPy to Python 3. If you look for the Python 2 version see the python2 branch .
MacroPyis an implementation of Syntactic Macros in the Python Programming Language . MacroPy provides a mechanism for user-defined functions (macros) to perform transformations on the abstract syntax tree (AST) of a Python program at import time . This is an easy way to enhance the semantics of a Python program in ways which are otherwise impossible, for example providing an extremely concise way of declaring classes:
>>> import macropy.console 0=[]=====> MacroPy Enabled <=====[]=0 >>> from macropy.case_classes import macros, case >>> @case class Point(x, y): pass >>> p = Point(1, 2) >>> print(p.x) 1 >>> print(p) Point(1, 2)
Try it out in the REPL, it should just work! You can also see the docs/examples/using_macros folder for a minimal example of using MacroPy’s existing macros.
MacroPy has been used to implement features such as:
- Case Classes , easy Algebraic Data Types from Scala, and Enums ;
- Quick Lambdas from Scala and Groovy, and the Lazy and Interned utility macros;
- String Interpolation , a common feature in many programming languages;
- Tracing and Smart Asserts , and show_expanded , to help in the debugging effort;
- MacroPEG Parser Combinators , Parser Combinators inspired by Scala’s,
As well as a number of more experimental macros such as:
- Pattern Matching from the Functional Programming world
- Tail-call Optimization , preventing unnecessary stack overflows
- PINQ to SQLAlchemy , a shameless clone of LINQ to SQL from C#
- Pyxl Snippets , XML interpolation within your Python code
- JS Snippets , cross compiling snippets of Python into equivalent JavaScript
Browse the high-level overview , or look at the Tutorials will go into greater detail and walk you through
Or just skip ahead to the Discussion and MacroPy: Bringing Macros to Python . We’re open to contributions, so send us your ideas/questions/issues/pull-requests and we’ll do our best to accommodate you! You can ask questions on the Google Group and on the Gitter channel or file bugs on thee issues page. See the changelist to see what’s changed recently.
MacroPy3 is tested to run on CPython 3.4 or newer and PyPy 3.5. I has no current support for Jython . MacroPy3 is also available on PyPI .
Just execute a:
$ pip install macropy3
if you want to use macros that require external libraries in order to
work, you can automatically install those dependencies by installing
one of the pinq
or pyxl
extras like this:
$ pip install macropy3[pinq,pyxl]
then have a look at the docs at http://macropy3.readthedocs.io/en/latest/ .
MacroPy: Bringing Macros to Python
Macros are always a contentious issue. On one hand, we have the LISP community, which seems to using macros for everything. On the other hand, most mainstream programmers shy away from them, believing them to be extremely powerful and potentially confusing, not to mention extremely difficult to execute.
With MacroPy, we believe that we have a powerful, flexible tool that makes it trivially easy to write AST-transforming macros with any level of complexity. We have a compelling suite of use cases demonstrating the utility of such transforms.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据结构与算法JavaScript描述
[美] Michael McMillan / 王群锋、杜 欢 / 人民邮电出版社 / 2014-8 / 49.00元
通过本书的学习,读者将能自如地选择最合适的数据结构与算法,并在JavaScript开发中懂得权衡使用。此外,本书也概述了与数据结构与算法相关的JavaScript特性。 本书主要内容如下。 数组和列表:最常用的数据结构。 栈和队列:与列表类似但更复杂的数据结构。 链表:如何通过它们克服数组的不足。 字典:将数据以键-值对的形式存储。 散列:适用于快速查找和检索。......一起来看看 《数据结构与算法JavaScript描述》 这本书的介绍吧!