我们正在考虑使用 Python(IronPython,但我认为这不相关)为另一个控制设备的应用程序提供某种“宏”支持。
我们想用 Python 编写相当简单的函数,它需要一些参数——比如时间、温度和位置。不同的函数将采用不同的参数,主应用程序将包含用户界面(类似于属性网格),允许用户为 Python 函数参数提供值。
因此,例如,函数 1 可能需要时间和温度,而函数 2 可能需要位置和几次。
我们希望能够从 Python 代码动态构建用户界面。容易做的事情是在模块中查找函数列表,并(使用inspect.getargspec)获取每个函数的参数列表。
然而,仅仅参数名称列表还不够 - 理想情况下,我们希望能够包含有关每个参数的更多信息 - 例如,它是“类型”(高级类型 - 时间、温度等,而不是语言级别类型),也许还有“友好名称”或描述。
所以,问题是,将此类信息添加到函数中的良好“Pythonic”方法是什么。
我想到的两种可能性是:
因为 Python 在将脚本构建到大型应用程序中似乎非常流行,所以我想这是一些常见约定的已解决问题,但我还没有找到它们。
装饰器是向函数添加元数据的好方法。添加一个将类型列表附加到 .params 属性或其他内容的列表:
def takes(*args):
def _takes(fcn):
fcn.params = args
return fcn
return _takes
@takes("time", "temp", "time")
def do_stuff(start_time, average_temp, stop_time):
pass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)