我目前正在建立一个个人调试功能库,并希望制作一个调试打印功能,它可以提供比在任何地方添加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如何实际实现这些可能的任何解决方案。
eval
传递(如何在不将其作为另一个参数传递的情况下获取该参数,我绝对不想这样做?)uneval
'字符串的方式(甚至可能吗?)