Python 如何为存储在数组中的函数提供常量和动态参数
我使用数组存储需要在行中调用的函数:Python 如何为存储在数组中的函数提供常量和动态参数,python,arrays,Python,Arrays,我使用数组存储需要在行中调用的函数: def do_xslt(xsl, xml): newxml = dosomethingwithit(xsl,xml) return newxml TRANSFORM_PIPELINE = [ do_xslt('pass1.xsl'), do_xslt('pass2.xsl'), do_xslt('pass3.xsl'), ] 我现在要做的是调用带有给定参数和动态参数的TRANSFORM\u管道 我脑子里有这样的想法
def do_xslt(xsl, xml):
newxml = dosomethingwithit(xsl,xml)
return newxml
TRANSFORM_PIPELINE = [
do_xslt('pass1.xsl'),
do_xslt('pass2.xsl'),
do_xslt('pass3.xsl'),
]
我现在要做的是调用带有给定参数和动态参数的TRANSFORM\u管道
我脑子里有这样的想法,应该在循环中调用doxslt('passX.xsl',xml)
这种做法当然是错误的。但是如何在Python中使用正确的方法?用于部分应用函数:
from functools import partial
TRANSFORM_PIPELINE = [
partial(do_xslt, 'pass1.xsl'),
partial(do_xslt, 'pass2.xsl'),
partial(do_xslt, 'pass3.xsl')
]
调用partial()
返回的函数将调用do_xslt('pass1.xsl',*args,**kwargs)
,其中*args
和**kwargs
是传递给新函数的参数
演示:
用于部分应用该功能:
from functools import partial
TRANSFORM_PIPELINE = [
partial(do_xslt, 'pass1.xsl'),
partial(do_xslt, 'pass2.xsl'),
partial(do_xslt, 'pass3.xsl')
]
调用partial()
返回的函数将调用do_xslt('pass1.xsl',*args,**kwargs)
,其中*args
和**kwargs
是传递给新函数的参数
演示:
使用functools.partial()
-
或者,您也可以使用如下闭包:
def do_xslt(xsl):
def inner(xml):
newxml = dosomethingwithit(xsl,xml)
return newxml
return inner
这样,您就可以完全按照现在的方式保持转换管道。使用functools.partial()
-
或者,您也可以使用如下闭包:
def do_xslt(xsl):
def inner(xml):
newxml = dosomethingwithit(xsl,xml)
return newxml
return inner
通过这种方式,您可以完全按照现在的方式保持转换管道。示例中没有,但实际函数将返回转换后的参数。不管怎样,我已经更新了。谢谢。部分函数起作用。这是最好的解决方案,因为我在TRANSFORM_管道中也有函数,它们不需要给定的常量(在进行xslt转换之前)。所以我可以在每次需要的时候使用partial。这个例子没有,但是一个实函数会返回转换后的参数。不管怎样,我已经更新了。谢谢。部分函数起作用。这是最好的解决方案,因为我在TRANSFORM_管道中也有函数,它们不需要给定的常量(在进行xslt转换之前)。所以我每次需要的时候都可以使用partial。
def do_xslt(xsl):
def inner(xml):
newxml = dosomethingwithit(xsl,xml)
return newxml
return inner