DefaultDict是一个有用的对象,它可以使用一个用于定义默认值的可调用函数动态创建新的键。例如,使用str
将空字符串设为默认值。在
>>> food = defaultdict(str)
>>> food['apple']
''
也可以使用lambda使表达式成为默认值。在
^{pr2}$但是,您不能将任何参数传递给这个lambda函数,这会在尝试调用它时导致错误,因为您实际上无法将参数传递给该函数。在
>>> food = defaultdict(lambda x: "{} food".format(x))
>>> food['apple']
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
food['apple']
TypeError: <lambda>() takes exactly 1 argument (0 given)
即使你试图提供参数
>>> food['apple'](12)
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
food['apple']
TypeError: <lambda>() takes exactly 1 argument (0 given)
这些lambda函数如何响应而不是一个僵化的表达式?在
在表达式中使用变量实际上可以在一定程度上避免这种情况。在
默认lambda表达式绑定到一个变量,该变量可以更改而不影响其已创建的其他键。当它可以与只在访问不存在的键时求值的其他函数绑定时,这一点特别有用。在
^{pr2}$相关问题 更多 >
编程相关推荐