Maison >développement back-end >Tutoriel Python >Comment utiliser Python pour obtenir le nom de la fonction en cours d'exécution

Comment utiliser Python pour obtenir le nom de la fonction en cours d'exécution

怪我咯
怪我咯original
2017-04-10 11:11:511552parcourir

Cet article présente principalement les informations pertinentes sur le code de l'instance de méthode de python pour obtenir le nom de l'instance en cours d'exécution. fonction, qui est obligatoire Les amis peuvent se référer à l'exemple de code de la méthode

python pour obtenir le nom de la fonction en cours d'exécution

Résumé : Méthode pour obtenir le code source nom, nom de la fonction et numéro de ligne de la fonction en c/c++ C'est très simple, FILE, FUNCTION et LINE python n'ont pas cette syntaxe, mais elle peut également être obtenue par une certaine méthode. Voici un exemple, en utilisant les informations d'exception. pour obtenir [peut entraîner une perte de performances]

Collez directement le code [veuillez vous référer à Python Core Programming 4.4]

#Obtenez le nom de la fonction où la fonction est appelée (appelée)

#author:peterguo@vip.qq.com 
def get_func_name():
  import sys
  try:
    raise Exception
  except:
    exc_info = sys.exc_info()                             #返回 异常类型,异常,traceback对象
    traceObj = exc_info[2]                               #traceback对象
    frameObj = traceObj.tb_frame                         #获取frame对象,即本函数的frame信息
    #print frameObj.f_code.co_name,frameObj.f_lineno         #请在使用的时候将其注释
    Upframe = frameObj.f_back                           #获取该代码段的frame信息,即调用该函数的函数frame
    #print Upframe.f_code.co_name, Upframe.f_lineno          #请在使用的时候将其注释
    return (Upframe.f_code.co_name, Upframe.f_lineno)[0]      #获取名称
调用方法

Obtenir le chemin du nom de fichier, le nom de la fonction, le numéro de ligne

-- ------------------------- ------------------------- ------------------------- -

def getCurRunPosInfo():
  import sys
  try:
    raise Exception
  except:
    exc_info = sys.exc_info()    
    traceObj = exc_info[2]   
    frameObj = traceObj.tb_frame 
    #print frameObj.f_code.co_name,frameObj.f_lineno
    Upframe = frameObj.f_back            
    #print Upframe.f_code.co_name, Upframe.f_lineno 
    return (Upframe.f_code.co_filename, Upframe.f_code.co_name, Upframe.f_lineno)


#测试代码
def test1():
  print getCurRunPosInfo()

def test2():
  print get_func_name()
  
输出:
>>('demo.py', 'test1', 44)
>>test2


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn