在Python中模拟C宏

时间:2015-06-21 16:18:39

标签: python string variables format resolve

如何在Python中自动解析格式说明符? 例如,而不是:

MagicPrint(str.format('This is {}', my.name))

我想按如下方式编写MagicPrint()函数:

MagicPrint('This is {my.name}')

连连呢?也许我可以为MagicPrint()函数使用装饰器? 请注意my.name中不存在**locals(),因为MagicPrint()可以从其他模块调用。

3 个答案:

答案 0 :(得分:0)

class my: name = "Jerry"
"This is {my.name}".format(**locals())

答案 1 :(得分:0)

仅适用于**locals()。我正在寻找一种从另一个模块接收a.class_name的方法。

class a: class_name = "name_class"
"This is {a.class_name}".format(**locals())

答案 2 :(得分:0)

使用this解决方案来访问调用者的变量。 然后我有自动访问来打印字符串。

def MagicPrint(s, *args, **kwargs):
    ''' In order for this to work we need the caller's module variables '''
    f = sys._getframe(1) 
    try:
        print (s.format(*args, **f.f_globals))
    except:
        print (s.format(*args, **f.f_locals))
    else:
        pass