![]() |
1
2
回答新问题。
在第一个python文件中(例如,
在第二个python文件中(例如,
注意
|
![]() |
2
3
不,python不支持C这样的预处理器宏。但是,您的示例在python中不需要做;您可以考虑提供一个相关的示例,这样人们就可以建议一种蟒蛇式的方式来表达您的需要。 |
![]() |
3
2
虽然似乎有一个用于python预处理的库 pypp 我不太熟悉。实际上没有针对Python内置的预处理功能。python代码被转换成字节代码,没有中间步骤。如果您是Python初学者,我建议您完全避免使用Pypp。 最接近宏的等价物可能是定义一个全局函数。与C样式宏等效的python可能是:
注意,很少需要获得Python对象的大小,因为所有的分配和删除都是在Python中为您处理的,除非您做了一些非常奇怪的事情。 除了使用lambda函数,您还可以执行以下操作:
基本上是一样的。 正如前面提到的,您的示例宏在Python中是多余的,因为您可以简单地编写:
|
![]() |
4
2
语言级别不支持此功能。在python中,您通常使用一个普通函数或一个普通变量,其中您可能使用C中的a define。 |
![]() |
5
2
一般来说,如果要将字符串转换为python代码,请使用eval。在python中很少需要eval。在标准库中的某个地方有一个模块可以告诉您一些关于对象代码的信息(在interp中不起作用),我从未直接使用过它。你可以在comp.lang.python上找到解释它的东西。 至于“c”宏,它似乎是您问题的真正焦点。 清喉咙 不要在Python代码中使用C宏。
“cpp”宏在python中的大多数使用都可以通过编写函数来完成。你可能想买本书 higher order functions 以处理更复杂的案件。我个人喜欢一本叫做高阶Perl(hop)的书,虽然它不是基于Python的,但大多数书都包含了独立于语言的思想——这些思想应该是每个程序员都需要学习的。 出于所有的意图和目的,在Python中只需要使用C预处理器,而不是在框外提供的C预处理器是能够定义常量的能力,即使在C和C++中也经常出错。 现在以一种聪明的方式在python中实现lisp宏,并且实际上需要它们… 清嗓子扫地毯下 . |
![]() |
6
0
好吧,对于勇敢的人来说,有超巨蟒: http://code.google.com/p/metapython/wiki/Tutorial
但如果您刚开始使用Python,可能不需要它。只要继续练习通常的动态特性(duck类型、可调用对象、修饰器、生成器…),您就不会觉得需要C样式的宏了。 |
![]() |
7
0
您可以将其写入第二个文件,而不是复制代码字符串
|