在运行时定义python函数

时间:2016-12-22 02:00:36

标签: python

我想在旅途中使用以下模板创建python函数:

def x(sender,data):
  r=b''  
  r+=sender.send_type0(data[0])
  r+=sender.send_type1(data[1])
  r+=sender.send_type2(data[2])
  ...
  r+=sender.send_typen(data[n])
  return r

我想从一个将类型数据保存为2D数组的数组中创建许多这些函数。 我可以在运行时生成简单的函数,但是我想在生成时运行for语句,而不是每次调用函数。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用getattr动态输入属性...

def x(sender,data):
    return b"".join(
        getattr(sender, "send_type"+i)(data[i])
        for i in xrange(len(data))
    )

我认为你不会在预编译功能方面找到很多性能优势,假设甚至可以......