当前位置:  开发笔记 > 编程语言 > 正文

在创建函数时生成带有参数的函数?

如何解决《在创建函数时生成带有参数的函数?》经验,为你挑选了0个好方法。

我的目标是动态生成函数,然后将它们保存在文件中.例如,在我目前的尝试中,在呼叫时create_file

import io


def create_file(a_value):
    a_func = make_concrete_func(a_value)
    write_to_file([a_func], '/tmp/code.py')


def make_concrete_func(a_value):
    def concrete_func(b, k):
        return b + k + a_value

    return concrete_func


def write_to_file(code_list, path):
    import inspect
    code_str_list = [inspect.getsource(c) for c in code_list]
    with open(path, 'w') as ofh:
        for c in code_str_list:
            fh = io.StringIO(c)
            ofh.writelines(fh.readlines())
            ofh.write('\n')


create_file('my_value')

我想要的输出是(文件/tmp/code.py):

def concrete_func(b, k):
    return b + k + 'my_value'

我得到的输出是(文件'/tmp/code.py'):

def concrete_func(b, k):
    return b + k + a_value

更新:我的解决方案使用inspect.getsource返回字符串.我想知道我是否限制了你的选择,因为大多数解决方案建议更换字符串.解决方案无需使用inspect.getsource.你无论如何都可以编写它以获得所需的输出.

更新2:我这样做的原因是因为我想为Amazon Lambda生成一个文件.Amazon Lambda将获取一个python文件及其虚拟环境,并将为您执行它(使您免于担心可伸缩性和容错性).你必须告诉Lambda要调用哪个文件和哪个函数,Lambda将为你执行它.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有