Есть ли способ связать функции с несколькими аргументами?
На данный момент я "цепляю" свою операцию в 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
есть очень элегантный способ продолжить работу с помощью оператора 'pipe' %>%
(оператор pipe также присутствует в 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
Это очень связано с этой темой, но с дополнительными аргументами: Как лучше вызвать цепочку функций в Python?