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

时间:2015-06-01 06:38:00

标签: python

例如,当使用dirname在层次结构中遍历多个级别时,我通常会这样做。

grandparent = os.path.dirname(__file__)
grandparent = os.path.dirname(grandparent)

或者,如果有更多级别。

grandparent =  = os.path.dirname(__file__)
for x in xrange(5):
  grandparent = os.path.dirname(grandparent)

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

grandparent = y(5, os.path.dirname, __file__)

y是我正在寻找的神秘功能。

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

1 个答案:

答案 0 :(得分:3)

如何自己定义这样的高阶函数

def repeat (f, x, n) :
    for i in range(n):
        x = f(x)
    return x

使用f您希望调用的函数,x序列中的第一个输入,以及n您希望调用此函数的次数。

然后您可以通过以下方式调用它:

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

如果您计划走到目录的根目录,那么使用大量重复不安全:您永远不会知道某些用户已经制作了超过九千的级联目录。