全局路径搜索Python文件,用is.wolk 拼接路径,importing.import-module获取属性便利属性判断是否为类函数,返回结果,文件路径,类名,函数名,函数输入参数以及类型,前提条件是带有装饰器的函数
时间: 2024-05-04 07:20:11 浏览: 65
以下是一个可能实现你想要的功能的 Python 代码:
```python
import os
import inspect
import importing
def find_decorated_functions(start_dir):
# 存储结果的列表
results = []
# 遍历目录中的所有 Python 文件
for root, dirs, files in os.walk(start_dir):
for file in files:
if file.endswith(".py"):
# 构造文件路径
path = os.path.join(root, file)
# 使用 importing 模块导入模块
module = importing.import_module(os.path.splitext(path)[0])
# 检查模块中的所有属性
for name, obj in inspect.getmembers(module):
# 如果属性是函数并且带有装饰器
if inspect.isfunction(obj) and hasattr(obj, "__wrapped__"):
# 获取函数的输入参数及其类型
signature = inspect.signature(obj)
params = []
for param in signature.parameters.values():
params.append((param.name, param.annotation))
# 存储结果
results.append((path, obj.__wrapped__.__qualname__, obj.__name__, params))
return results
```
这个函数会在指定目录下查找所有 Python 文件,并尝试导入每个文件中的模块。然后,它会检查模块中的每个属性,如果属性是一个带有装饰器的函数,则会提取函数的输入参数及其类型,并返回结果。返回值是一个列表,其中每个元素都是一个包含文件路径、类名、函数名和函数输入参数及其类型的元组。
阅读全文
相关推荐














