我目前正在构建一个模块化的函数管道来处理
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',b')
然后在任何地方导入MyCustomType.它只是一个类,每次要构建元组时都不必重新创建该类.
import somemodule def NewFunction(param): a = ... b = ... return somemodule.MyCustomType(a,b)