>>145 を少し変えてみた

def Function(args, body):
    code = "def _tmp_func_(" + args + "):\n"
    code += "\t" + body.lstrip("\n").rstrip().replace("\n", "\n\t")
    exec compile(code, "lambda", "exec")
    return _tmp_func_


map(Function("n", """
    if n % 2 == 0:
        return n * n
    else:
        return n
    """), range(10))
→ [0, 1, 4, 3, 16, 5, 36, 7, 64, 9]


読みづらすぎる・・・