函数如何在Python中调用另一个函数

时间:2013-08-30 05:05:13

标签: python

我想在Python中动态调用函数,代码如:

class A:
    def show1(self, x) :
        print x

    def show2(self, x, y) :
        print x, y

    def callfunc(self, f, args) :
        #TODO: call function f with args
        pass

c = A()
c.callfunc(c.show1, [1])
c.callfunc(c.show2, [1,2])

但我不知道怎么打电话" show1"或" show2"在callfunc中。因为" show1"和" show2"有不同数量的args," args"是一个清单。

2 个答案:

答案 0 :(得分:5)

Same as always.

def callfunc(self, f, args):
  f(*args)

答案 1 :(得分:1)

如果可以将函数引用作为参数传递,则可以直接调用该函数。这是一种更灵活的方法

class A:
    def show1(self, x) :
        print x

    def show2(self, x, y) :
        print x, y

    def callfunc(self, f, args) :
        return getattr(self, f)(*args)

c = A()
c.callfunc("show1", [1])
c.callfunc("show2", [1,2])

在这种情况下,可以动态确定和调用要调用的函数。