使用getmembers(module,isfunction)时忽略python模块中的导入函数

rok*_*rok 1 python reflection

有没有办法忽略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)]
Run Code Online (Sandbox Code Playgroud)

funcs等于:(['boo','moo', 'foo']包括导入的函数“ foo”)

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

Mar*_*ers 5

您必须测试该__module__属性;它是命名完整模块路径的字符串:

funcs = [mem[0] for mem in getmembers(module, isfunction)
         if mem[1].__module__ == module.__name__]
Run Code Online (Sandbox Code Playgroud)