跨多个链式函数的namedTuples定义

时间:2013-07-04 18:30:04

标签: python types functional-programming namedtuple

我目前正在构建一个模块化的函数管道来处理Python(2.7)中的一些数据。

我坚持一个松散的功能风格,没有任何对象(对于我正在应用它的代码类型和例程非常有意义而且到目前为止代码整洁可读,设计对象只会让所有东西变成一个有点混淆)。

为了保持一致,我定义了一个自定义的名称元组,带有字段名称等。 这个想法是初始函数读取一些数据文件并返回这些特别定义的元组之一。以下函数将读取它,使用数据字段并返回一个新的元组(因为它们是不可变的)和更改。但是,我似乎无法避免必须执行导入集合并重新定义自定义类型 - 请参阅代码示例。

import collections
def NewFunction(MyCustomType):

    a = ...
    b = ...

    MyCustomType = collections.namedtuple('MyCustomType', 'a, b')
    return MyCustomType(a, b)

这并不是真正导致问题,但我很好奇,好像没有更多的“全球”方式来做这件事而没有那么多的重复。如果有,是不是我做的更多“副作用免费”又称功能? (对不起,这里实际上有两个问题:第一个是实际的封闭式python问题,第二个是更开放/哲学的问题。)

提前致谢!

1 个答案:

答案 0 :(得分:12)

namedtuple()函数基本上是一个类工厂。在模块级别构建一次类:

import collections

MyCustomType = collections.namedtuple('MyCustomType', 'a, b')

然后在处导入MyCustomType而不是。它只是一个课程,你不必每次想要建立元组时重新创建该课程。

import somemodule

def NewFunction(param):

    a = ...
    b = ...

    return somemodule.MyCustomType(a, b)