应用函数n次,使用last的输出作为next的输入

Mar*_*son 5 python

例如,当使用dirnameI 遍历层次结构的多个级别时,通常会执行此操作.

grandparent = os.path.dirname(__file__)
grandparent = os.path.dirname(grandparent)
Run Code Online (Sandbox Code Playgroud)

或者,如果有更多级别.

grandparent =  = os.path.dirname(__file__)
for x in xrange(5):
  grandparent = os.path.dirname(grandparent)
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一个不那么冗长的方法呢?

grandparent = y(5, os.path.dirname, __file__)
Run Code Online (Sandbox Code Playgroud)

y我正在寻找的神秘功能在哪里?

如果没有,那么这个函数会被调用么?

Wil*_*sem 3

自己定义这样的高阶函数怎么样:

def repeat (f, x, n) :
    for i in range(n):
        x = f(x)
    return x
Run Code Online (Sandbox Code Playgroud)

包含f您希望调用的函数、x序列中的第一个输入以及n您希望调用该函数的次数。

然后您可以使用以下命令来调用它:

>>> repeat(lambda x: x**2,2,3)
256
>>> repeat(os.path.dirname,'/home/kommusoft/testfolder/sqldump', 2)
'/home/kommusoft'
Run Code Online (Sandbox Code Playgroud)

然而,如果您打算走到目录的根目录,那么使用大量重复是不安全的:您永远不知道某个用户已经创建了超过 9000 个目录的级联。