我目前正在构建一个模块化的函数管道,以处理Python(2.7)中的一些数据。
我坚持一种松散的功能风格,没有任何对象(对于我应用的代码类型和例程来说,它非常有意义,而且到目前为止代码整洁可读,设计对象只会让一切变得更加模糊)。
为了保持一致,我定义了一个自定义的名称元组,带有字段名等。其思想是,初始函数读取一些数据文件,并返回其中一个特殊定义的元组。以下函数将读取它,处理数据字段,并返回一个新的元组(因为它们是不可变的)。然而,我似乎无法避免必须进行导入集合并重新定义自定义类型——请参阅代码示例。
import collections
def NewFunction(MyCustomType):
a = ...
b = ...
MyCustomType = collections.namedtuple('MyCustomType', 'a, b')
return MyCustomType(a, b)
这并没有真正造成问题,但我很好奇,似乎没有一种更"全球性"的方法可以做到这一点而不重复这么多。如果有的话,我做更多"无副作用"的方式不就是功能性的吗??(很抱歉这里有两个问题:第一个是实用的封闭python问题,第二个是更开放/哲学的问题。)
提前感谢!
namedtuple()
函数基本上是一个类工厂。在模块级别构建一次类:
import collections
MyCustomType = collections.namedtuple('MyCustomType', 'a, b')
则将CCD_ 2导入所有位置,而不是。它只是一个类,不必每次构建元组时都重新创建该类。
import somemodule
def NewFunction(param):
a = ...
b = ...
return somemodule.MyCustomType(a, b)