有没有办法让Python的函数的函数更具可读性?

我用 Python 编写了以下代码,在一个参数“x”中涉及多个函数:

stemming(removeStopWords(stringToList(removeRepChar(charOk(x)))))

我想知道我是否可以做些什么来使该代码更具可读性(如果它还不够可读)。我可以像在其他编程语言中那样以某种方式省略那些括号吗?例如在 Haskell 中:

stemming $ removeStopWords $ stringToList $ removeRepChar $ charOk x

或无点方法

funct = stemming.removeStopWords.stringToList.removeRepChar.charOk

funct(x)

我担心我有数百个括号和函数的情况,比如那些可能会变成无聊的更大代码的情况:

function1(function2(function3( ... (function300(x)) ... )))

我知道 Python 不是一种纯函数式语言,但没人知道


哈士奇WWW
浏览 96回答 2
2回答

叮当猫咪

就个人而言,我只是使用带括号的“本机”Python 方式,其中一个Chain类用于__getattr__提供范围内定义的任何函数globals。class Chain:    def __init__(self, val):        self.val = val    def __getattr__(self, f):        return lambda: Chain(globals()[f](self.val))def upper(s):    return s.upper()def pad(s):    return "abc" + s + "xyz"    def swap(s):    return s.swapcase()print(Chain("foo").upper().pad().swap().val)# ABCfooXYZ或者使用partialandreduce来创建一个compose函数(虽然我觉得这样的东西应该已经存在了):from functools import reduce, partialdef compose(*fs):    return partial(reduce, lambda x, f: f(x), fs)print(compose(upper, pad, swap)("foo"))

慕侠2389804

您可以尝试以下几个选项。一种是编写您自己的带有函数和参数的“应用”。def apply_functions(functions, arg):    for fctn in functions:        arg = fctn(arg)    return argresult = apply_functions((charOk, removeRepChar, stringToList,    removeStopWords), x)另一种方法是将您的函数放入一个类中并使用方法链接。您已经有返回值的函数,只需 returnself即可。class Foo:    def __init__(self, df):        self.df = df    def charOk(self):        # do the operation        return self    def removeRepChar(self):        # do the operation        return self    etc...result = Foo(x).charOk().removeRepChar().stringToList().removeStopWords()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python