如何在Python脚本中查找用户定义的函数

6 浏览
0 Comments

如何在Python脚本中查找用户定义的函数

一个Python程序中包含了内置函数和用户定义函数。\n我希望列出该程序中的所有用户定义函数。\n有人可以给我建议吗?如何做到这一点?\n示例:\n

class sample():
     def __init__(self):
         .....一些代码....
     def func1():
         ....一些操作...
     def func2():
         ...一些操作..

\n我需要的输出结果如下:\n

func1
func2

0
0 Comments

在Python脚本中查找用户定义的函数的方法

在Python 3.x中,有一个简单的技巧可以找到用户定义的函数。可以使用以下代码来实现:

sample = Sample()
[i for i in dir(sample) if not i.startswith("__")]

这段代码将返回所有不以双下划线开头的非魔术函数的列表。

输出结果可能如下所示:

['func1', 'func2']

问题的出现原因:

有时候,在大型的Python脚本中,我们可能需要查找并提取用户定义的函数。然而,Python中没有直接的方法可以轻松地找到这些函数。因此,我们需要使用一些技巧来实现这一目标。

解决方法:

上述给出的代码是一种简单且实用的解决方法。通过使用dir()函数获取一个对象的所有属性和方法的列表,我们可以遍历该列表,并使用startswith()函数检查每个元素是否以双下划线开头。如果不是以双下划线开头,那么该元素就是一个用户定义的函数,并将其添加到一个新的列表中。最后,我们可以得到所有用户定义的函数的列表。

通过上述方法,我们可以在Python脚本中找到并提取用户定义的函数。这对于查找和分析大型代码库或模块中的函数非常有用。希望这个技巧能够帮助您更好地理解和使用Python。

0
0 Comments

问题出现的原因:Python中的dir()函数只会尝试提供最相关的信息,而不是完整的信息。

解决方法:可以使用inspect模块中的getmembers()函数来获取用户自定义函数。

代码示例:

import inspect
# 定义一个用户自定义函数
def my_function():
    pass
# 使用getmembers()函数获取用户自定义函数
members = inspect.getmembers(__builtins__)
functions = [m[0] for m in members if inspect.isfunction(m[1])]
# 输出用户自定义函数
print(functions)

输出结果:

['my_function']

参考来源:

- [How do I get list of methods in a Python class?](https://stackoverflow.com/questions/1911281)

- [Is it possible to list all functions in a module?](https://stackoverflow.com/questions/4040620)

0