【发布时间】:2011-07-27 22:52:16
【问题描述】:
我最近一直在学习 Python,并对其卓越的运行时元编程能力感到惊讶。以前,我在阅读有关 Smalltalk 的文章时遇到了“运行时元编程”一词,据我所知,它拥有最好的运行时元编程功能。 Python 与 Smalltalk w.r.t 的对比效果如何?元编程?两种语言采用的方法之间有哪些显着差异?
【问题讨论】:
-
在python中,类型和可调用对象是第一类,组合它们,甚至在运行时创建它们是合理的。任何比这更神奇的东西通常被认为是 un"pythonic"。我们不喜欢在 python 中创建 DSL,我们只是使用 python。
-
@TokenMacGuy:感谢您的回复!我的问题不是关于元编程是否是 Pythonic,或者是否应该这样做。这是一个关于两种语言元编程能力比较研究的简单学术问题。
-
Smalltalk 的一大理念是正交性。坦率地说,Python 在这方面受到了影响。并非一切都适用于一切。示例:inspect.getargspec() 不适用于内置函数(无论如何在 C 解释器中)。 eval 仅适用于表达式字符串,而 exec 仅适用于语句字符串。无法腌制 Lambda 表达式。也许PyPy没有这些问题,我不确定。但我确实非常喜欢 Python,并且发现在实际应用程序中使用元类、柯里化和偶尔使用的描述符非常方便。
-
感谢@wberry 的回复。您可以将其发布为答案。
标签: python oop programming-languages metaprogramming smalltalk