传递/更改一个函数的参数,该函数作为另一个函数的参数传递



我有一个奇怪的问题。我想传递/改变一个函数的参数,这个函数本身是作为另一个函数的参数传递的。查看下面的代码了解更多细节

def generic_method(selector_type='CSS', selector=None, parent_element=None, postfunc=None):
    # Do your stuff and get value of attr_value
    print "Doing Stuff"
    attr_value = '$123.70'
    print "Post-Processing Step"
    if postfunc:
        attr_value = postfunc(attrval=attr_value)
    return attr_value
# The 2 methods below are in separate file 
from functools import partial
def method_in_bot():
    p, q, r = 11, 12, 13
    postfunc = partial(post_processing, 12, p, q, r, post=23)
    value = generic_method('XPATH', '.class-name', 'parent_element', postfunc)
    return value
def post_processing(y=None, *args, **kwargs):
    attr_value = kwargs.get('attrval', 'None')
    if attr_value:
        return attr_value.split('$')
    return []

因此,我通过使用functools's partial将我的post_processing方法及其所有参数传递给我的generic_method,并将一个新的变量attrval传递给我的后处理方法。但更理想的是将attr_value直接传递或赋值给变量ypost_processing

我正在寻找在运行时修改函数参数的方法。我在网上搜索,发现他们是一个python的inspect库,它告诉你传递给函数的参数。

在Python 3中,您可以使用def post_processing(*args, y=None, **kwargs):,这就是它。对于Python 2,你必须找到一种不同于partial的技术。或者在实现functools时子类化它。附加参数的部分

相关内容

  • 没有找到相关文章

最新更新