链接具有多个参数的函数

时间:2016-02-19 13:34:20

标签: python r python-2.7 functional-programming chain

有没有办法用多个参数链接函数?

目前我"链接" 我在Python的操作如下:

def createDirIfNecessary(directoryName):
    if not os.path.exists(directoryName):
        print 'Creating directory [%s]'% directoryName
        os.makedirs(directoryName)
    return directoryName

cakeName = 'lemonPie'
cookDate = '2011-01-04'

#yewww very ugly, big blob of function call ...
myDir = os.path.join(getDbDir('kitchenCupboardDir'),'cakes', cakeName)
file  = os.path.join(createDirIfNecessary(myDir), cookDate + '.gz')

例如,在R中,有一种非常优雅的方式可以继续使用'管道' %>%运算符(管道运算符也出现在Haskell中)。等效代码是:

cakeName = 'lemonPie'
cookDate = '2011-01-04'

file = getDbDir('kitchenCupboardDir') %>%
         file.path('cakes', cakeName) %>%
         createDirIfNecessary %>%
         file.path(paste0(cookDate,'.gz'))

这里只有4个功能,可以有6个,7个可以轻松链接。不幸的是我无法使用R,我想知道python 2.7

中是否有解决方案

这与此主题有很大关系,但有进一步的论据: Better way to call a chain of functions in python?

1 个答案:

答案 0 :(得分:0)

fn(see on GitHub包含>>运算符,以及许多其他功能编程的好东西。您可以在python中进行函数式编程,即使(see also this answer)它并不是最佳方式。 Python可以"链"功能通过方法:

file = getDbDir(...).makePath(...).createDir(...).getPath(...)

这是连锁经营的一种方式。