天天看點

python_擷取目前代碼行号_擷取目前運作的類名和函數名的方法擷取行号擷取目前的函數名

擷取行号

擷取目前行号的方法如下:

import sys  
print "here is :",__file__,sys._getframe().f_lineno  
           

擷取目前的函數名

擷取目前的函數名或者運作的類名,需要分開來說

python中擷取函數名的情況分為内部、外部

從外部擷取函數名

從外部擷取函數名字:

def test():
	‘hello world!’
print test.__name__
           

或者:

getattr(test,'__name__')
           

從内部擷取函數名

1.使用sys子產品的方法:

def test():
	print 'hello world'
print sys._getframe().f_code.co_name
           

2.使用修飾器的方法:

使用修飾器就可以對函數指向一個變量,然後取變量對象的__name__方法。

def timeit(func):
	def run(*argv):
		print func.__name__
		if argv:
			ret = func(*argv)
		else:
			ret = func()
		return ret
	return run
@timeit
def test(a):
	print 'hello'
	print a 
test(1111)
           

測試結果如下:

>>> test(1111)
test
hello
1111
           

3.利用 inspect子產品動态擷取目前運作的函數名

import inspect
def get_current_function_name():
	return inspect.stack()[1][3]
class MyClass:
	def function_one(self):
		print "%s.%s ******"%(self.__class__.__name__, get_current_function_name())
if __name__ == "__main__":
	myclass = MyClass()
	myclass.function_one()
           

結果:

MyClass.function_one******