sys._getframe([depth])
Return a frame object from the call stack
depth 表示調(diào)用棧的深度牌借,默認(rèn)為0棘钞,返回棧頂?shù)目蚣?/p>
Frame objects
Frame objects represent execution frames
Special read-only attributes: f_back is to the previous stack frame (towards the caller), or None if this is the bottom stack frame; f_code is the code object being executed in this frame; f_locals is the dictionary used to look up local variables; f_globals is used for global variables; f_builtins is used for built-in (intrinsic) names; f_lasti gives the precise instruction (this is an index into the bytecode string of the code object).
Special writable attributes: f_trace, if not None, is a function called at the start of each source code line (this is used by the debugger); f_lineno is the current line number of the frame — writing to this from within a trace function jumps to the given line (only for the bottom-most frame). A debugger can implement a Jump command (aka Set Next Statement) by writing to f_lineno.
import sys
def get_cur_info():
print sys._getframe().f_code.co_filename #當(dāng)前文件名逢勾,可以通過__file__獲得
print sys._getframe(0).f_code.co_name #當(dāng)前函數(shù)名
print sys._getframe(1).f_code.co_name #調(diào)用該函數(shù)的函數(shù)的名字,如果沒有被調(diào)用族铆,則返回<module>汉规,貌似call stack的棧底
print sys._getframe().f_lineno #當(dāng)前行號(hào)