我正在尝试理解一小段代码,这对我来说花了很多时间,我仍然不清楚它究竟是如何工作的。
我知道lambda
是如何工作的,我过去曾经使用过它们,但这段代码对我来说有点复杂。
def demo(arg):
return lambda target = None: (target, arg)
with_foo = demo({"foo": 50})
print with_foo()
print with_foo({"bar": 4})
上述代码的输出是
(None, {'foo': 50})
({'bar': 4}, {'foo': 50})
有人可以向我解释如何填充这个target
变量并获得此输出吗?
答案 0 :(得分:4)
def demo(arg):
return lambda target = None: (target, arg)
这相当于此代码,而不是lambda
:
def demo(arg):
def func(target=None):
return (target, arg)
return func
(请注意,target = None
只是一个带默认值的参数。)
所以我们有一个返回另一个函数的函数。
执行with_foo = demo({"foo": 50})
时,结果是与此等效的函数:
def with_foo(target=None):
return (target, {"foo": 50})
我希望能够解决问题!
答案 1 :(得分:0)
执行前4行后的内容相当于:
def with_foo(target=None):
return target, {"foo":50}