我们能用关键字参数和
例如,我有以下代码:
def create_folder_transformer(folder):
return lambda predicate: lambda file_transformer: map(file_transformer,
filter(predicate,
os.listdir(folder)))
我可以创造一个
folder_transformer
与一个特定的文件夹,然后提到'谓词等,但它有一个特定的顺序。不过,我认为这不必与订单挂钩。
-
如果我通过
predicate
folder
file_transformer
作为论据。现在如果我供应
文件夹
,我得到一个部分函数
-
文件变压器
,我得到一个部分函数
谓语
谓语
文件夹
.
简而言之,有没有一个内在的部分创造者
递归地
继续生成部分函数,直到获得所有输入;如果满足输入,只需执行代码。我相信这叫做
在Haskell中,这是函数在默认情况下的执行方式。
我认为可能有帮助的用例:
-
文件夹
具有
n
使用创建分部
文件夹
-
当我有一个特定的谓词,比如-filter out
mp4
跨多个文件夹的文件-带有
喜欢
string.endswith(".mp4")
会更好。
docs
但如果我没有填写一些参数,这些部分就不会返回部分。但自从我宣布
None
,我也不能指望。理想情况下,我希望
它本身的行为就像这样,甚至不用担心使用一个额外的函数,比如partial,也就是说它应该被烘焙到我的函数中。
def folder_transformer(folder=None, predicate=None, transformer=None):
return map(transformer, filter(predicate, os.listdir(folder)))
file_transformer = partial(folder_transformer, predicate=os.path.isfile)
# This gives me a "map" object, but I want another partial takes "transformer".
current_transformer = file_transformer(folder=folder)
# This works, but my question is can I make my function do this automatically.
current_transformer = partial(file_transformer,folder=folder)