【发布时间】:2017-01-03 11:32:48
【问题描述】:
从这样的事情:
print(get_indentation_level())
print(get_indentation_level())
print(get_indentation_level())
我想得到这样的东西:
1
2
3
代码可以这样读取自己吗?
我想要的只是更多嵌套的代码部分的输出。就像这使代码更易于阅读一样,它会使输出更易于阅读。
当然,我可以手动实现这一点,例如使用.format(),但我想到的是一个自定义打印功能,它将print(i*' ' + string) 其中i 是缩进级别。这将是在我的终端上生成可读输出的快速方法。
有没有更好的方法来避免繁琐的手动格式化?
【问题讨论】:
-
我真的很好奇你为什么需要这个。
-
@Harrison 我想根据代码中的缩进方式缩进我的代码输出。
-
真正的问题是:你为什么需要这个?缩进级别是静态的;当您将
get_indentation_level()语句放入您的代码时,您肯定会知道这一点。您也可以直接执行print(3)或其他任何操作。可能更有趣的是函数调用堆栈上的当前嵌套级别。 -
是为了调试你的代码吗?这看起来要么是记录执行流程的超级天才方式,要么是针对简单问题的超级过度设计的解决方案,我不确定它是什么......也许两者兼而有之!
-
@FabvonBellingshausen:听起来它的可读性比您希望的要低得多。我认为通过显式传递
depth参数并在将其传递给其他函数时根据需要为其添加适当的值可能会更好。代码的嵌套不太可能与您希望输出的缩进完全对应。
标签: python reflection metaprogramming indentation tokenize