日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python序列_什么是Python的序列协议?

發布時間:2025/3/12 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python序列_什么是Python的序列协议? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這不是真的一致.

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的序列协议?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。