【发布时间】:2014-04-21 03:44:09
【问题描述】:
我正在尝试使用Is it possible to list all functions in a module? 的答案来列出一系列模块中的函数。但在我的解释器中,我得到如下信息:
Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import inspect
>>> import math
>>> math.pow(5,4)
625.0
>>> inspect.getmembers(math, inspect.isfunction)
[]
>>> inspect.getmembers(inspect, inspect.isfunction)
[('_check_class', <function _check_class at 0x00C9F9C0>), ('_check_instance', <f
unction _check_instance at 0x00C9F978>), ('_get_user_defined_method', <function
_get_user_defined_method at 0x00C9FB70>), ('_getfullargs', <function _getfullarg
s at 0x00C6A4F8>), ('_is_type', <function _is_type at 0x00C9FA08>), ('_missing_a
rguments', <function _missing_arguments at 0x00C9F198>), ('_shadowed_dict', <fun
ction _shadowed_dict at 0x00C9FA50>)... foo, bar, etc]
>>> math
<module 'math' (built-in)>
>>> inspect
<module 'inspect' from 'E:\\Python33\\lib\\inspect.py'>
>>> import win32api
>>> inspect.getmembers(win32api, inspect.isfunction)
[]
>>> win32api
<module 'win32api' from 'E:\\Python33\\lib\\site-packages\\win32\\win32api.pyd'>
像往常一样,我认为有一些非常明显的原因可以解释为什么它没有列出我尝试的一半模块中的所有功能。我能猜到的最好的是 isfunction() 仅适用于 .py 模块?如果有与我的愚蠢无关的先天问题,有没有办法纠正这件事?
这显然是 isfunction() 的问题,因为 getmembers 似乎工作正常:
>>> import math
>>> import inspect
>>> inspect.getmembers(math)
[('__doc__', 'This module is always available. It provides access to the\nmathe
matical functions defined by the C standard.'), ('__loader__', <class '_frozen_i
mportlib.BuiltinImporter'>), ('__name__', 'math'), ('__package__', ''), ('acos',
<built-in function acos>), ('acosh', <built-in function acosh>), ('asin', <buil
t-in function asin>)... foo, bar, etc]
我知道有一个 dir() 可以使用,但它并不是那么整洁。
【问题讨论】:
标签: python python-module inspect