python--基础知识点--管道

管道运算符的工作原理
为了理解 LCEL 和管道运算符的工作原理,我们创建自己的管道兼容函数。

当 Python 解释器在两个对象之间看到 | 运算符(如 a | b)时,它会尝试将对象 a 传递给对象 b 的 or 方法。这意味着这些模式是等价的:

对象方法

chain = a.__or__(b)
chain("一些输入")

管道方法

chain = a | b
chain("一些输入")
考虑到这一点,我们可以构建一个 Runnable 类,它接受一个函数并将其转换为可以使用管道运算符 | 与其他函数链接的函数。

class Runnable:
    def __init__(self, func):
        self.func = func

    def __or__(self, other):
        def chained_func(*args, **kwargs):
            # 其他函数使用这个函数的结果
            return other(self.func(*args, **kwargs))
        return Runnable(chained_func)

    def __call__(self, *args, **kwargs):
        return self.func(*args, **kwargs)

让我们实现这个,取值 3,加上 5(得到 8),然后乘以 2,最后期望得到 16。

def add_five(x):
    return x + 5

def multiply_by_two(x):
    return x * 2

使用 Runnable 包装这些函数

add_five = Runnable(add_five)
multiply_by_two = Runnable(multiply_by_two)

使用对象方法运行它们

chain = add_five.__or__(multiply_by_two)
print(chain(3))  # (3 + 5) * 2 = 16

直接使用 or 我们会得到正确答案,让我们尝试使用管道操作符 | 将它们链接在一起:

将可运行的函数链接在一起

chain = add_five | multiply_by_two
print(chain(3))  # (3 + 5) * 2 = 16

无论使用哪种方法,我们都会得到相同的响应,这就是 LCEL 在链接组件时使用的管道逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值