【问题标题】:Simulate C macro in Python在 Python 中模拟 C 宏
【发布时间】:2015-09-07 02:52:54
【问题描述】:

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

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

我想写MagicPrint()函数如下:

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

建议?也许我可以为MagicPrint() 函数使用装饰器? 请注意my.name 不存在于**locals() 中,因为可以从另一个模块调用MagicPrint()

【问题讨论】:

标签: python string variables format resolve


【解决方案1】:
class my: name = "Jerry"
"This is {my.name}".format(**locals())

【讨论】:

  • 只有在 **locals() 包含 my.name 变量时才有效。我正在寻找一种从另一个模块接收my.name 的方法。
  • 你可能想把它放在你的问题中。您也可以使用vars(modulename) 从该模块中获取变量。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    使用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
    

    【讨论】:

      猜你喜欢
      • 2013-12-25
      • 2011-07-24
      • 1970-01-01
      • 2017-05-08
      • 2010-09-16
      • 2010-11-20
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      相关资源
      最近更新 更多