我正在使用python库tinydb
存储数据。
根据tinydb
文档,示例查询的正确语法为:
User = Query()
db.search(User.birthday.year == 1990)
我们为什么不需要:
User = Query()
db.search(lambda User: User.birthday.year == 1990)
db.search
是仅一次一次的功能。这意味着该函数正在接收固定值(比较结果)作为输入,而不是充当比较器?
tinydb
库如何实现这种奇怪的语法?
答案 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
也建立了一个新查询。