最初的问题是:
有没有一种方法可以像C:
#define OBJWITHSIZE(_x) (sizeof _x)/(sizeof _x[0])
我想知道的是:
在Python中有没有避免代码重复的方法? 在我正在编写的程序的一部分中,我有一个函数:
^{pr2}$在另一部分中,我将这些代码嵌入到一个字符串中,稍后将
输出到自身将运行的python文件:
"""
def replaceProgramFilesPath(filenameBr):
def getProgramFilesPath():
import os
return os.environ.get("PROGRAMFILES") + chr(92)
return filenameBr.replace("<ProgramFilesPath>",getProgramFilesPath() )
"""
如何构建一个“宏”来避免这种重复?在
回答新问题。在
在您的第一个python文件(例如称为
first.py
)中:在第二个python文件(例如,
^{pr2}$second.py
)中:请注意,
first.py
需要位于python的模块搜索路径中,或者与second.py
位于同一目录中,这样才能在second.py
中进行导入。在不,Python不支持像C这样的预处理器宏。不过,您的示例并不需要在Python中执行;您可以考虑提供一个相关的示例,以便人们可以建议一种Python方法来表达您的需要。在
虽然似乎确实有一个名为pypp的python预处理库,但我并不完全熟悉它。实际上,python内置没有预处理功能。Python代码被翻译成字节码,没有中间步骤。如果您是python的初学者,我建议您完全避免使用pypp。在
与宏最接近的等价物可能是定义全局函数。相当于C风格宏的python可能是:
请注意,您很少需要获得python对象的大小,因为所有的分配和删除都是在python中为您处理的,除非您正在做一些非常奇怪的事情。在
您也可以执行以下操作,而不是使用lambda函数:
^{pr2}$基本上是一样的。在
如前所述,您的示例宏在python中是多余的,因为您可以简单地编写:
相关问题 更多 >
编程相关推荐