【发布时间】:2019-06-28 11:39:12
【问题描述】:
我正在清理一些模糊的数据,我想对其进行一些自动化处理。也就是说,我希望一个脚本有一些预定义的清理函数,按照数据清理的顺序排列,我设计了一个装饰器来使用this solution从脚本中检索这些函数:
from inspect import getmembers, isfunction
import cd # cleaning module
functions_list = [o[0] for o in getmembers(cd) if isfunction(o[1])]
这非常有效。但是,它确实以不同的顺序检索函数 (by name)
出于重现性目的,将以下清洁模块视为cd:
def clean_1():
pass
def clean_2():
pass
def clean_4():
pass
def clean_3():
pass
解决方案输出:
['clean_1', 'clean_2', 'clean_3', 'clean_4']
它需要在哪里:
['clean_1', 'clean_2', 'clean_4', 'clean_3']
主要问题的其他解决方案是可以接受的(但考虑了性能)。
【问题讨论】:
-
查看 ast 解析python语法树docs.python.org/3/library/ast.html
-
为清楚起见,您能否包含
cd的代码?在此处的问题中始终包含minimal reproducible example 非常重要。 -
@ChrisLarson。它实际上包括在内。 “出于重现性目的,请考虑以下清洁模块:”
-
@AndrewNaguib 啊。我对您的问题进行了小修改以澄清,以防其他人错过参考。
标签: python python-3.x