python操作符op_内置“in”op的Python源代码

要找到anypython操作符的实现,首先使用^{} function找出python为其生成的字节码:>>> dis.dis("'0' in ()")

1 0 LOAD_CONST 0 ('0')

2 LOAD_CONST 1 (())

4 COMPARE_OP 6 (in)

6 RETURN_VALUE

in运算符变成COMPARE_OP字节码。现在您可以跟踪此操作码在^{}中的Python求值循环中是如何处理的:

^{pr2}$

cmp_outcome()是defined in the same file,in运算符是其中一个开关:case PyCmp_IN:

res = PySequence_Contains(w, v);

if (res < 0)

return NULL;

break;

一个快速grep显示了PySequence_Contains在Objects/abstract.c中的定义:int

PySequence_Contains(PyObject *seq, PyObject *ob)

{

Py_ssize_t result;

PySequenceMethods *sqm = seq->ob_type->tp_as_sequence;

if (sqm != NULL && sqm->sq_contains != NULL)

return (*sqm->sq_contains)(seq, ob);

result = _PySequence_IterSearch(seq, ob, PY_ITERSE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值