当前位置: 首页 > 后端技术 > Python

Python代码阅读(第38篇):基于谓词函数和属性字符串构造判断函数

时间:2023-03-25 23:20:16 Python

Python代码阅读合集介绍:为什么不建议Python初学者直接阅读项目源码?本文阅读的代码是根据给定的谓词函数和属性串实现的,构造一个判别函数,用于判断字典对象中对应的属性是否满足谓词函数中的条件。本文阅读的代码片段来自30-seconds-of-python。check_propdefcheck_prop(fn,prop):返回lambdaobj:fn(obj[prop])#EXAMPLEcheck_age=check_prop(lambdax:x>=18,'age')user={'name':'Mark','age':18}check_age(user)#Truecheck_prop函数接收一个谓词函数fn和一个属性字符串prop,返回一个判别函数。利用这个判别函数,可以判断字典对象的属性。check_prop接收一个谓词函数fn,并在check_prop内部构造一个匿名函数。这个匿名函数的入参是obj(待识别的字典对象)。匿名函数使用obj[prop]调用谓词函数fn判断obj对象的属性prop是否满足特定条件。最后check_prop函数返回这个匿名函数。lambda表达式如lambdaparameters:expression将生成一个函数对象。未命名对象的行为类似于定义函数:def(parameters):returnexpression因此check_prop函数可以重写如下:defcheck_prop(fn,prop):defanonymous1(obj):returnfn(obj[prop])returnanonymous1lambdax:x>=18,'age'可以写成匿名函数如下:defanonymous2(x):returnx>=18sofromcheck_prop(lambdax:x>=18,'age')返回匿名函数如下:defanonymous3(obj):returnobj['age']>=18check_age指向匿名函数。check_age(user)会判断user对象中的age属性是否大于等于18。