Is there a way to chain functions with multiple arguments?
For the moment I "chain" my operation in Python
like this:
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')
For example, in R
there is a very elegant way to proceed using a 'pipe' %>%
operator (pipe operator also present in Haskell
). The equivalent code is:
cakeName = 'lemonPie'
cookDate = '2011-01-04'
file = getDbDir('kitchenCupboardDir') %>%
file.path('cakes', cakeName) %>%
createDirIfNecessary %>%
file.path(paste0(cookDate,'.gz'))
Here there are only 4 functions, there can be 6, 7 wich can be easily chained. I can't use R unfortunately and I wonder if there is a solution in python 2.7
It is quite related to this topic but with further arguments: Better way to call a chain of functions in python?