考虑一下:
def function1():
def nestedfunc(param1, **kw):
logging.info("nested function %s" % kw) #error
function2(nestedfunc("is called"), string="not default")
def function2(func, string="default"):
try:
#doing some setting
func()
finally:
#reset back to setting
我正进入(状态:
func()
TypeError: 'NoneType' object is not callable
我假设func()没有传递参数,这会导致错误。
为了澄清,期望的结果是能够调用添加了任意数量参数的func()。
有人知道这样做的正确方法是什么吗?任何建议将不胜感激!
您会function2
收到,func=None
因为这是的(默认)返回值nestedfunc()
,该返回值通过参数调用"is called"
。您可以functools.partial
用来“冻结”某些函数的参数:
from functools import partial
def function1():
def nestedfunc(param1, **kw):
logging.info("nested function %s" % kw) #error
function2(partial(nestedfunc, "is called"), string="not default")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句