一行Python代碼是否可以知道它的縮進嵌套級別?python


Answers

是的,這絕對有可能,下面是一個工作示例:

import inspect

def get_indentation_level():
    callerframerecord = inspect.stack()[1]
    frame = callerframerecord[0]
    info = inspect.getframeinfo(frame)
    cc = info.code_context[0]
    return len(cc) - len(cc.lstrip())

if 1:
    print get_indentation_level()
    if 1:
        print get_indentation_level()
        if 1:
            print get_indentation_level()
Question

從這樣的事情:

print(get_indentation_level())

    print(get_indentation_level())

        print(get_indentation_level())

我想得到這樣的東西:

1
2
3

代碼能夠以這種方式讀取它自己嗎?

我所需要的是更多嵌套代碼的嵌套部分的輸出。 與使代碼更易於閱讀的方式相同,這將使輸出更易於閱讀。

當然,我可以使用例如.format()手動實現這一點,但我想到的是一個自定義打印函數,它將print(i*' ' + string) ,其中i是縮進級別。 這將是在我的終端上進行可讀輸出的快速方法。

有沒有更好的方法來避免艱苦的手動格式化?




>>> import inspect
>>> help(inspect.indentsize)
Help on function indentsize in module inspect:

indentsize(line)
    Return the indent size, in spaces, at the start of a line of text.