Python函数参数作为内省字符串

时间:2017-03-24 00:48:39

标签: python introspection

我目前正在建立一个个人调试功能库,并希望制作一个调试打印功能,它可以提供比在任何地方添加print(thing)行更多的生活质量功能。我目前的目标是将这个伪代码函数转换为Python:

def p(*args, **kwargs)
    for arg in args:
        print(uneval(arg), ": ", arg)
    return args

**kwargs的类型以及它们对输出的影响对于这个问题并不重要,因此我不在这里使用它们。

我的主要问题来自尝试使用uneval参数的一些方法,以便我可以获得实际产生它们的代码字符串。作为用例:

>>> p(3 + 5) + 1
3 + 5: 8 # printed by p 
9 # Return value of the entire expression

有几种方法我认为我可以做到这一点,不仅我不确定它们是否有效,我还关心Pythonic如何实际实现这些可能的任何解决方案。

  1. 使用前一个上下文的本地标识符字典将参数作为字符串eval传递(如何在不将其作为另一个参数传递的情况下获取该参数,我绝对不想这样做?)
  2. 找出从.py文件中运行哪一行来提取uneval'字符串的方式(甚至可能吗?)
  3. 找一些具有我需要的信息的元数据魔法(如果它存在,最好不太可能)。

0 个答案:

没有答案