使用getmembers(module, isfunction)时忽略已导入函数

3 投票
1 回答
1918 浏览
提问于 2025-04-18 15:02

有没有办法在Python模块中忽略导入的函数呢?

比如我在用这个模块 module.py:

from inspect import getmembers, isfunction
import foo

def boo():
   foo()

def moo():
   pass


funcs = [mem[0] for mem in getmembers(module, isfunction)]

这里的 funcs 是 ['boo','moo', 'foo'](里面包含了导入的函数 'foo')

我希望 funcs 只包含 ['boo', 'moo']

1 个回答

10

你需要检查一下 __module__ 这个属性;它是一个字符串,用来表示完整的模块路径:

funcs = [mem[0] for mem in getmembers(module, isfunction)
         if mem[1].__module__ == module.__name__]

撰写回答