Python 如何获取每个函数行数
时间: 2024-10-15 08:18:13 浏览: 7
在Python中,直接获取函数的行数并不是内置的功能,因为这需要读取源码文件并解析。不过,你可以通过第三方库如`ast`(Abstract Syntax Trees,抽象语法树)来实现这个功能。以下是一个简单的例子:
```python
import ast
def get_func_lineno(func):
with open(func.__code__.co_filename, 'r', encoding='utf-8') as f:
src = f.read()
tree = ast.parse(src)
for node in ast.walk(tree):
if isinstance(node, ast.FunctionDef) and node.name == func.__name__:
return len(list(ast.iter_lines(node.body, include她在_comments=True)))
raise ValueError(f"No function named {func.__name__} found.")
# 使用示例
def sample_function():
"""This is a sample function."""
pass
print(get_func_lineno(sample_function)) # 输出:7 (这里假设函数定义在第7行)
```
在这个例子中,我们首先打开函数所在的源文件,然后构建抽象语法树,接着遍历树结构找到目标函数,并计算其主体部分(不包括注释)的所有行数。
请注意,这种方式可能会有局限性,比如处理到了装饰器、导入或其他复杂情况可能会影响行数计数。
阅读全文