Python Lambda函数缺少lambda关键字,但仍然有效

时间:2019-03-20 14:13:19

标签: python lambda tinydb

我正在使用python库tinydb存储数据。

根据tinydb文档,示例查询的正确语法为:

User = Query()
db.search(User.birthday.year == 1990)

我们为什么不需要:

User = Query()
db.search(lambda User: User.birthday.year == 1990)

db.search是仅一次一次的功能。这意味着该函数正在接收固定值(比较结果)作为输入,而不是充当比较器?

tinydb库如何实现这种奇怪的语法?

1 个答案:

答案 0 :(得分:4)

--executor-cores 4 --executor-memory 20g --num-executors 4实际上不是User.birthday.year;它是一个代表 query 以检索int的对象。同样,此对象的类型定义int而不是返回布尔值,而是返回一个函数,该函数将返回将提取的__eq__与1990年进行比较的结果。


浏览代码可以确认这一点。

int returns a new Query object,所以Query.__getattr__也是 一个User.birthday.year

Query.__eq__Query._generate_test的定义确认Query也建立了一个新查询。