例如,当使用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
是我正在寻找的神秘功能。
如果没有,那么这个函数会被调用什么?
答案 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'
如果您计划走到目录的根目录,那么使用大量重复不安全:您永远不会知道某些用户已经制作了超过九千的级联目录。