如何获取一个特定.py文件中定义的所有函数?

2024-04-19 15:36:06 发布

您现在位置:Python中文网/ 问答频道 /正文

使用inspect和importlib库,我们可以在一个.py文件中获得所有函数。你知道吗

import importlib
import inspect

my_mod = importlib.import_module("mymod")
all_functions = inspect.getmembers(my_mod, inspect.isfunction)

但是,列表all_functions不仅包括模块中定义的函数,还包括导入到模块中的函数。你知道吗

有办法区分它们吗?你知道吗


Tags: 模块文件函数pyimportmodmyimportlib
1条回答
网友
1楼 · 发布于 2024-04-19 15:36:06

解决方案的关键是function_name.__module__。考虑以下代码:

import a as module_to_check

print(
    'checking module "{}"'
    .format(module_to_check.__name__))

for attr in dir(module_to_check):
    if callable(getattr(module_to_check, attr)):
        print(
            'function "{}" came from module "{}"'
            .format(
                getattr(module_to_check, attr).__name__,
                getattr(module_to_check, attr).__module__))

输出为:

checking module "a"
function "a_2" came from module "a"
function "b_2" came from module "b"

a.py是:

from b import b_1, b_2

a_1 = 1

def a_2():
    pass

b.py是:

b_1 = 1

def b_2():
    pass

相关问题 更多 >