这不是真的一致.

int

PySequence_Check(PyObject *s)

{

if (PyDict_Check(s))

return 0;

return s != NULL && s->ob_type->tp_as_sequence &&

s->ob_type->tp_as_sequence->sq_item != NULL;

}

PySequence_Check检查对象是否提供C序列协议,通过表示对象类型的PyTypeObject中的tp_as_sequence成员实现.此tp_as_sequence成员是一个指向结构的指针,该结构包含一系列用于序列行为的函数,例如sq_item用于通过数字索引检索项目,sq_ass_item用于项目分配.

具体来说,PySequence_Check要求其参数不是dict,并且它提供sq_item.

使用Python编写的__getitem__类型将提供sq_item,无论它们是概念序列还是映射,因此用Python编写的不从dict继承的映射将通过PySequence_Check.

另一方面,collections.abc.Sequence仅检查对象是否具体地从collections.abc.Sequence继承,或者它的类(或超类)是否使用collections.abc.Sequence显式注册.如果你只是自己实现一个序列而不做其中任何一个,它就不会通过isinstance(your_sequence,Sequence).此外,使用collections.abc.Sequence注册的大多数类都不支持所有collections.abc.Sequence的方法.总体而言,collections.abc.Sequence的可靠性远远低于人们通常的预期.

至于什么算作实际中的序列,它通常是任何支持__len__和__getitem__的整数索引从0开始并且不是映射.如果一个函数的文档说它需要任何序列,那几乎总是它需要它.不幸的是,“不是映射”很难测试,原因类似于“序列”如何难以确定.

python遵循什么协议_什么是Python的序列协议?相关推荐

  1. python 迭代器协议_浅谈Python中的生成器和迭代器

    迭代器 迭代器协议 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么返回一个异常来终止本次迭代.(只能往前走,不能往后退!) 迭代器对象 遵循了(实现了)迭代器协议的对象.(对象内 ...

  2. 做python的心得体会_实训python的心得体会

    如何学习Python的一些总结 C++.Java乃至C#都可以看做是同一类型的语言:C++还算灵活,但纷繁复杂的语法使得生产效率低下,Java提高了生产效率,却损失了灵活性;C#算是在生产效率和灵活性 ...

  3. python安装与程序_二、Python安装和第一个程序

    <1.Python语言介绍 1.官方介绍:Python 是一款易于学习且功能强大的编程语言. 它具有高效率的数据结构,能够简单又有效地实现面向对象编程.Python 简洁的语法与动态输入之特性, ...

  4. python适用于哪些芯片_五年Python三大秘诀!日常生活不可或缺的秘密武器

    EDA365欢迎您登录! 您需要 登录 才可以下载或查看,没有帐号?注册 x 本帖最后由 Ber_thaw99 于 2020-12-28 14:07 编辑' P& t5 n# [5 J) Y& ...

  5. python展开函数方法_逐步展开Python详细教学—Python语法

    Python语法–在Python世界迈出第一步 我们已经拥有了许多的编程语言,而且都有自己的特色,但是一种语言的独特之处在于它的特性.最终,是它的特点让它被选中或通过项目.因此,在开始更深入的Pyth ...

  6. python 宏处理库_常用的Python库,给大家分享一下!

    Tkinter---- Python默认的图形界面接口. Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组.Tcl/Tk是 ...

  7. python urllib dns 缓存_新手用Python做一个网页爬虫

    咱们好哈,最近博主在学习Python,学习时期也遇到一些问题,获得了一些经历,在此将自个的学习体系地整理下来,假如咱们有爱好学习爬虫的话,能够将这些文章作为参阅,也期待咱们总共同享学习经历. 首要py ...

  8. python变量定义大全_详解python变量与数据类型

    这篇文章我们学习 Python 变量与数据类型 变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问.在 Python 中 变量命名规定,必须是大小写英文,数字 ...

  9. python模块下载过程_常用的python模块及安装方法

    bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework ctypes:用来调用动态链接库 DBUti ...

最新文章

  1. 从摩尔定律到人工智能,指数定律释放人类潜能
  2. Machine Learning | (9) 回归算法-线性回归
  3. 【原创】C# 递归获取指定目录的子目录及其所有文件
  4. MD5加密解密帮助类
  5. python中等于号可以用is代替_python中字符串比较使用is、==和cmp()总结
  6. 目前银行利息高还是余额宝利息高?如何选择?
  7. 论文浅尝 | 融入知识的弱监督预训练语言模型
  8. R速成指南-时间序列重采样
  9. 智能实验室-杀马(Defendio) 4.11.0.790
  10. 【python】通讯录制作
  11. matlab差分法解拉普拉斯方程,拉普拉斯方程有限差分法的MATLAB实现
  12. 封锁阳光大学(染色)
  13. 基于Zigbee的智能家居系统
  14. winform TreeView节点中的CheckBox 禁用
  15. python operator用法,Python operator.eq()函数与示例
  16. Eclipse+Java+Swing实现企业人事管理系统
  17. 电脑共享手机连接的WiFi
  18. Frequent Pattern
  19. xcode13 swift语言 ios开发 快捷代码优化方式(代码重构)例子
  20. STM32F103C8T6引脚图及引脚功能说明

热门文章

  1. ubuntu root用户登录
  2. quart定时任务从数据库获取定时时间
  3. mysql datetime类型处理计算时间差
  4. 计算机作文素材,语文最新作文素材.doc
  5. 调用toString方法会StackOverflowError的原因和解决方案
  6. 小程序和uniapp图片未完全加载时优化方案
  7. 使用伟福仿真器对IAR 8051生成的HEX文件进行仿真
  8. 深入java--与MySQL连接时的时间类问题以及Calendar的用法
  9. SpringBoot 全局异常拦截器
  10. linux防火墙查看方法有,linux防火墙状态查看的方法实例