在PYTHON中,将逻辑运算本身而不仅仅是布尔结果作为函数的输入

在PYTHON中,将逻辑运算本身而不仅仅是布尔结果作为函数的输入,python,function,Python,Function,在SqlAlchemy中,我看到了这种类型的表达式: s = select([users, addresses]).where(users.c.id == addresses.c.user_id) 它似乎将逻辑运算本身而不仅仅是布尔结果作为输入。例如,如果我想构建如下函数: def myfunc(argument): # I know its not right, I just want to show what I am suppose to do print(argument[ke

在SqlAlchemy中,我看到了这种类型的表达式:

s = select([users, addresses]).where(users.c.id == addresses.c.user_id)
它似乎将逻辑运算本身而不仅仅是布尔结果作为输入。例如,如果我想构建如下函数:

def myfunc(argument): # I know its not right, I just want to show what I am suppose to do
    print(argument[key], argument[operation], argument[value])

myfunc(myage >= 10)

>> I want to get output like "myage", ">=" (or something similar), 10
有人知道怎么做吗

谢谢

正如所指出的,这是通过重载比较运算符来返回布尔值以外的值来实现的。下面是一个小例子:

class col(object):
    def __init__(self, name):
        self.name = name

    def __lt__(self, other):
        return [self.name, '<', other]


def myfunc(arg):
    print(arg)

myage = col('myage')
myfunc(myage < 10)
类列(对象):
定义初始化(self,name):
self.name=名称
定义(自身、其他):

return[self.name',我相信SQLAlchemy会从中产生一些操作符重载(向下滚动到
Python操作符方法
['myage', '<', 10]