小编Ber*_*324的帖子

Python的types.FunctionType如何创建动态函数?

我正在努力增强我的Python技能,我遇到了使用types.FunctionType的Saltstack的开源代码,我不明白发生了什么.

salt.cloud.clouds.cloudstack.py

函数create()有以下代码:

kwargs = {
    'name': vm_['name'],
    'image': get_image(conn, vm_),
    'size': get_size(conn, vm_),
    'location': get_location(conn, vm_),
}
Run Code Online (Sandbox Code Playgroud)

函数get_image和get_size传递给函数'namespaced_function',如下所示:

get_size = namespaced_function(get_size, globals())
get_image = namespaced_function(get_image, globals())
Run Code Online (Sandbox Code Playgroud)

salt.utils.functools.py

具有命名空间功能

def namespaced_function(function, global_dict, defaults=None, preserve_context=False):
    '''
    Redefine (clone) a function under a different globals() namespace scope
        preserve_context:
            Allow keeping the context taken from orignal namespace,
            and extend it with globals() taken from
            new targetted namespace.
    '''
    if defaults is None:
        defaults = function.__defaults__

    if preserve_context:
        _global_dict = …
Run Code Online (Sandbox Code Playgroud)

python salt-stack

5
推荐指数
1
解决办法
725
查看次数

标签 统计

python ×1

salt-stack ×1