Skip to main content
 首页 » 编程设计

python之在函数本身中打印函数名称

2025年05月04日14softidea

我有很多功能,例如:

def DBworker_thatdoes_job7(): 
    print "DBworker_thatdoes_job7 starting..." 
 
    ... the actual code here ... 
 
    print "DBworker_thatdoes_job7 finished." 

如何在不对函数名称进行硬编码的情况下做到这一点?这是我想要实现的目标:

def DBworker_thatdoes_job7(): 
    print thisfunction.name + " starting..." 
    ... 
 
def DBworker_thatdoes_cleaning18(): 
    print thisfunction.name + " starting..." 
    ... 

注意:我已经看过 How to get a function name as a string in Python?但我真的没有看到在这里做这件事的好方法。另外,这个问题接近Determine function name from within that function (without using traceback)但这里适用于在启动和结束时记录函数名称的特定用例,因此不完全重复。

请您参考如下方法:

你可以使用装饰器:

def start_finish(f): 
    def new_f(*args, **kwargs): 
        print("starting", f.__name__) 
        f(*args, **kwargs) 
        print("finished", f.__name__) 
    return new_f 
 
@start_finish 
def function(): 
    print('function body') 
 
function() 

这打印:

starting function 
function body 
finished function