在函数上创建一个循环,该函数使用包装器在新行中打印出所接收函数的元素

时间:2012-10-02 08:53:54

标签: python python-2.7

我有一个带两个列表的函数。现在我现在所拥有的是该函数将从列表中获取所有参数并将它们打印在一个新行中。问题是我不能改变函数本身,而是我必须在它上面创建一个包装器或循环来完成我需要它做的事情。

Name = ['one', 'two', 'three']
size = [1, 2, 3]

def createSomething(Name, size = None):
    if size:
         something = loudEchoCmd("something create --size %s --name %s " % ((',')join(size), (',')join(Name)))
    else:
         something = loudEchoCmd("something create --name %s " % (',')join(Name))
    return something

运行时我得到的是:

 Example:
 something create --size 1, 2, 3 --name one, two, three

这就是我想要的:

 Example:
 something create --size 1 --name one
 something create --size 2 --name two
 something create --size 3 --name three

所以我需要在该函数上创建一个包装器来完成我需要它做的事情。我不知道该怎么做。这就是我只需更改功能就可以做到的事情:

  def createSomething(Name, size = None):
      if size:
         for(i, (x1, x2)) in enumerate(zip(size,Name)):
             loudEchoCMD("something create --size {0} --name {1}")
      else:
         for x in Name:
             loudEchoCMD("something create --name {0}".format(x))

但不知道怎么做而不改变功能:(

1 个答案:

答案 0 :(得分:1)

这应该做你想要的:

def createManySomethings(Names, sizes):
    for (name, number) in zip(Names, sizes):
        createSomething([name], [number])