我们知道C / C ++有宏功能来进行文本替换,这里有一个例子:
#include <string>
#include <iostream>
using namespace std;
#define FIRST_NAME Print("Moon")
#define FAMILY_NAME Print("Sun")
string Print(string name)
{
cout << name << endl;
return name;
}
int main()
{
string name = FIRST_NAME + FAMILY_NAME;
return 0;
}
正如您所看到的,FIRST_NAME和FAMILY_NAME是宏,它们将被Print()函数替换。
我的问题是Python有类似的功能吗?或者我该怎么做才能创建这种功能?
答案 0 :(得分:0)
也许有点个人,但我会说出我要说的话:
使用宏已经在C ++中不被认为是一种好习惯,您可以使用函数或模板获得相同的性能和更好的编译器检查。减少重复副作用的风险,或者因为非1语句宏而破坏块。
因此,宏的剩余合法用途,特别是在C中,是元编程。例如,升压预处理器库。
在python中,没有硬类型,只有duck类型。 (如果它像鸭子一样吠得足够) 它是一种动态语言(与静态相比),并且即使不能完全消除,也可以减少对宏的需求。
Python有一种品味(一种哲学),它被称为pythonic
,宏不是pythonic。只是不要使用它们。
在你的情况下,制作函数。
答案 1 :(得分:0)
在Python中,您几乎可以通过其元类(对象上常见的Python操作的自定义行为),运行时反射和运行时评估来实现几乎。
另一方面,除非您确实需要,否则不建议采用这种方法,因为它会增加复杂性并破坏您“静态地”理解代码的能力。也就是说,除非您正在执行以下操作,否则请不要使用它们:
当然,还可以对您的Python源代码应用任何类型的预处理程序,包括C语言,也包括Python脚本。
答案 2 :(得分:-2)
是的,python具有类似的功能,即赋值
def MyPrint(name):
print(name)
return name
FIRST_NAME = MyPrint("Moon")
FAMILY_NAME = MyPrint("Sun")
请注意,C ++也具有此功能。