[英]How do I get a list of function instances for a python source file?
假设我有一个名为example.py
的文件,其内容如下:
def func_one(a):
return 1
def func_two(b):
return 2
def func_three(b):
return 3
我如何获得该文件的功能实例列表? 我尝试过使用compiler
, parser
和ast
模块,但是我真的无法弄清楚。 可能比这容易得多,但是这超出了我的理解范围。
编辑:明确地说,我不想导入函数。
您可以使用检查模块:
>>> import inspect
>>> import example
>>> inspect.getmembers(example, inspect.isroutine)
[('func_one', <function func_one at 0x0238CBB0>), ('func_three', <functi
three at 0x0240ADB0>), ('func_two', <function func_two at 0x0240ADF0>)]
您可以使用dir 。 这将返回当前本地范围内的名称列表。 尽管这可能返回的不仅仅是函数名。
>>> import utils
>>> utils.__name__
'utils'
>>> dir(utils)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'human_number', 'islice', 'math', 'prime_factors', 'primes_sieve', 'primes_sieve1', 'proper_divisors', 'pyth_triplet', 'square_of_sum', 'sum_of_nums', 'sum_of_squares', 'test', 'triangle_nums', 'window']
如果您真的不想像这样导入名称空间:
import examples
print dir(examples)
['__builtins__', '__doc__', '__file__', '__name__',
'__package__', 'func_one', 'func_three', 'func_two'] #OUTPUT
您可以open
并read
文件,搜索所有def
并将其附加到列表中,从而返回所有函数和方法定义名称。
您可以使用globals()函数,它会在所有可以找到函数的全局环境中返回一个字典。 例:
d = globals().copy()
l = []
[l.append(k) for k in d if k.startswith('func')]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.