获取函数的源文件行号
Get the source file line number of a function
有没有办法为任何随机函数完成此操作?
class Class:
def function(self):
pass
import inspect
print(inspect.getlineno(Class.function))
这只是给出:
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\inspect.py", line 1479, in getlineno
return frame.f_lineno
AttributeError: 'function' object has no attribute 'f_lineno'
您可以使用 getsourcelines()
:
class Class:
def function(self):
pass
import inspect
ins = inspect.getsourcelines(Class.function)
print('Source:',ins[0])
print('Line:',ins[1])
输出:
Source: [' def function(self):\n', ' pass\n']
Line: 4
inspect.getlineno
需要一个框架对象。
您应该改用 inspect.getsourcelines
:
import inspect
class Class:
def function(self):
pass
print(inspect.getsourcelines(Class.function))
产出
([' def function(self):\n', ' pass\n'], 4)
它returns一个包含实际源代码和定义行号的二元组。
print(inspect.getsourcelines(Class.function)[1])
# 4
下面将给出给定函数的源文件行号。
class Class:
def function(self):
pass
import inspect
function_definition = inspect.getsourcelines(Class.function)
for output in function_definition:
print(output)
Class.function.__code__.co_firstlineno
表达式应该比 运行 inspect.getsourcelines(Class.function)
工作得更快,并且还会给你一个行号。
有没有办法为任何随机函数完成此操作?
class Class:
def function(self):
pass
import inspect
print(inspect.getlineno(Class.function))
这只是给出:
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\inspect.py", line 1479, in getlineno
return frame.f_lineno
AttributeError: 'function' object has no attribute 'f_lineno'
您可以使用 getsourcelines()
:
class Class:
def function(self):
pass
import inspect
ins = inspect.getsourcelines(Class.function)
print('Source:',ins[0])
print('Line:',ins[1])
输出:
Source: [' def function(self):\n', ' pass\n']
Line: 4
inspect.getlineno
需要一个框架对象。
您应该改用 inspect.getsourcelines
:
import inspect
class Class:
def function(self):
pass
print(inspect.getsourcelines(Class.function))
产出
([' def function(self):\n', ' pass\n'], 4)
它returns一个包含实际源代码和定义行号的二元组。
print(inspect.getsourcelines(Class.function)[1])
# 4
下面将给出给定函数的源文件行号。
class Class:
def function(self):
pass
import inspect
function_definition = inspect.getsourcelines(Class.function)
for output in function_definition:
print(output)
Class.function.__code__.co_firstlineno
表达式应该比 运行 inspect.getsourcelines(Class.function)
工作得更快,并且还会给你一个行号。