这不是真的一致.

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 python 序列

    内置序列 容器类型 list .tuple和collections.deque这些序列能放入不同的类型的数据 扁平序列 str.byets.bytearray.memoryview(内存视图)和arr ...

  2. python 切片_全面解读Python高级特性切片

    大家好,欢迎来到Crossin的编程教室! 众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组-)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slic ...

  3. 什么是python 包_什么是python包

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我正在写一个需要在.data子目录中打开数据文件的模块的python包. 现在我 ...

  4. python马尔可夫链_[译] 用 Python 实现马尔可夫链的初级教程

    马尔可夫链是通常用一组随机变量定义的数学系统,可以根据具体的概率规则进行状态转移.转移的集合满足 马尔可夫性质 ,也就是说,转移到任一特定状态的概率只取决于当前状态和所用时间,而与其之前的状态序列无关 ...

  5. python 堆排序_堆排序用python

    Python天天美味(30) - python数据结构与算法之快速排序 快速排序的原理是将取出第一个数,将整个数组分为两波,一拨都大于这个数,另一波都小于这个数,然后递归用同样的方法处理第一波数字和第 ...

  6. 学习python课程_想学习Python吗? 这是我们的免费4小时互动课程

    学习python课程 Python is a popular, versatile and easy-to-learn language. It's the go-to language for AI ...

  7. 2018年python薪资_最好的Python:2017和2018年至今我最喜欢的文章集

    2018年python薪资 我打算发布此收藏集 (My intention with publishing this collection) Last year I only used Medium ...

  8. python股市_如何使用python和破折号创建仪表板来主导股市

    python股市 始终关注大局 (Keep Your Eyes on the Big Picture) I've been fascinated with the stock market since ...

  9. 有趣的超短python代码_有趣的python精短程序

    python可以简单优美,也很有趣,下面是收集的例子: 1.一句话开始一个http的文件服务器: $ python -m SimpleHTTPServer Serving HTTP on 0.0.0. ...

  10. 少儿编程python教材_少儿编程|Python环境安装

    一.为什么要学Python? 小学 山东,浙江,北京地区小学已将Python内容纳入教材 高中 浙江省已将信息技术教材编程语言替换为Python 大学 计算机二级考试加入"Python 语言 ...

最新文章

  1. 记得ajax中要带上AntiForgeryToken防止CSRF攻击
  2. 智慧树omg期末测试答案_智慧树答案广告文案写作单元期末见面课知到章节测试答案...
  3. 二叉堆与二叉堆的构建
  4. linux socket资源耗尽,TCP的socket资源被耗尽的问题
  5. linux如何查看所有的用户和组信息?
  6. iphone分辨率_AppStore今日推荐 iphone放大分辨率减少白噪点的照片处理工具
  7. C++ 二叉搜索树的实现
  8. Android环境配置(Eclipse全开发环境下载)
  9. Bzoj3576 [Hnoi2014]江南乐
  10. 用唯一的颜色id编号实现OpenGL选择功能(OpenGL Selection Using Unique Color IDs )
  11. HTML5 语义元素
  12. VBS病毒(爱虫病毒) 源代码
  13. 电信版行货黑莓9630修复历险记
  14. python画图的函数_python画图函数
  15. 消除macbook桌面快捷键图标上的箭头
  16. matlab梯形法数值积分,数值积分(梯形法)
  17. 流媒体高清视频校园直播点播
  18. 使用Hibernate,一对多和多对一的实现(双向).
  19. R 图表中的字体调整
  20. throw new Error() 真实的用法和throw error 的却别

热门文章

  1. 2019-10-12 线性最小方差估计和正交定理
  2. private MyAddin(System.IntPtr mdlDesc) : base(mdlDesc)这一步后就出bug
  3. 如何编写一个webpack插件
  4. Redis源码解析:14Redis服务器与客户端间的交互
  5. java serializable深入了解
  6. hdu 4982 贪心构造序列
  7. 九度OnlineJudge之1004:Median
  8. 北师大听讲座-张建华-走近Russia
  9. [转]对C#泛型中的new()约束的一点思考
  10. 四步法分析定位生产环境下MySQL上千条SQL中的问题所在