日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

容易被忽略的Python內置類型

瀏覽:15日期:2022-07-12 13:04:02

Python中的內置類型是我們開發中最常見的,很多人都能熟練的使用它們。

然而有一些內置類型確實不那么常見的,或者說往往會被我們忽略,所以這次的主題就是帶領大家重新認識這些“不同尋?!钡膬戎妙愋?。

(注意:本文基于python3,不會包含任何python2相關內容)

frozenset

不可變集合(frozenset)與普通的set一樣,只不過它的元素是不可變的,因此諸如`add`,`remove`,`update`等可以添加/刪除/改變集合內元素的方法是不存在的,換句話說一旦frozenset建立后你將不再可能更改集合內的元素。其他的方法與set一致: ```python >>> frozen = frozenset([1, 1, 2, 3, 4, 5, 6, 6]) frozenset({1, 2, 3, 4, 5, 6}) >>> frozen | {1, 2, 3, 7, 8} frozenset({1, 2, 3, 4, 5, 6, 7, 8}) >>> frozen ^ {1, 2, 3, 7, 8} frozenset({4, 5, 6, 7, 8}) ```

range

`range`事實上相當得常見,所以你也許會奇怪我為什么把它列出來。其實原因很簡單,因為大部分人熟悉range的使用,但并不清楚range到底是什么。返回迭代器?返回一個可迭代對象?range本身又是什么呢?

答案揭曉:

>>> range<class ’range’>

是的,range是個class!所以當我們使用for i in range(1, 10)這樣的代碼時,實際上我們遍歷了一個range對象,而range也實現了可迭代對象需要的__iter__魔法方法,所以它自身是可迭代對象:

>>> range.__iter__<slot wrapper ’__iter__’ of ’range’ objects>

因此,range既不返回迭代器,也不返回其他可迭代對象,而是返回的自己。

bytearray

`bytearray`一般情況下并不常見,它主要為了可以實現原地修改bytes對象而出現,因為bytes和str一樣是不可變對象,例如這樣是非法的: ```python >>> b = ’測試用例a’.encode(’utf8’) >>> b[-1] = 98 # change ’a’ -> ’b’ Traceback (most recent call last): File '', line 1, in TypeError: ’bytes’ object does not support item assignment ``` 而當我們把bytes的內容復制給`bytearray`時就可以進行原地修改了: ```python >>> array = bytearray(b) >>> array[-1] = 98 >>> array.decode(’utf8’) 測試用例b ``` `bytearray`對象沒有字面常量,因此只能通過構造函數創建,它有著和bytes一樣的方法,只是可變以及多了一些序列對象的特性。如果要創建一個`bytearray`可以有如下的幾種方法: - `bytearray()`返回一個空的`bytearray`對象 - `bytearray(10)`創建一個長度為10且內容被0填充的`bytearray` - `bytearray(iterable)`會將可迭代對象的內容轉換成bytes然后存入對象中 - `bytearray(b’Hi!’)`將已有的二進制數據復制進對象

另外bytearray還提供了fromhex和hex方便將數據以16進制的形式輸入輸出:

>>> array.hex()’e6b58be8af95e794a8e4be8b62’>>> bytearray().fromhex(’e6b58be8af95e794a8e4be8b62’).decode(’utf8’)’測試用例b’memoryview

`memoryview`提供了直接訪問對象內存的機制,只要目標對象支持[buffer protocol](https://docs.python.org/3/c-api/buffer.html#bufferobjects),例如`bytes`和`bytearray`。memoryview有個稱為“元素”的概念,也就是對象規定的最小的內存單元,比如bytes和bytearray的最小內存單元就是一個byte,具體取決于對象的實現。

len(view)通常等于len(view.tolist()),也就是等于view的“元素”數量。如果view.ndim == 0,那么整個view的內存會被視作一個整體,len會返回1,如果view.ndim == 1那么就正常返回“元素”的個數。view.itemsize會返回單個“元素”的大小。單位是byte。

view.readonly表示當前的memoryview是否是只讀的,例如bytes對象的view就是只讀的,view.readonly的值為True。是否只讀取決于被引用的對象是否可變以及對buffer protocol的實現。

對于使用完畢的memoryview應該盡快調用其release()方法釋放資源,而且部分對象在被view引用時會自動進行一些限制,比如bytearray會禁止調整大小,及時釋放view是資源可以解除這些限制。

結合示例可以更清晰地了解這些特性:

>>> data = bytearray(b’abcefg’)>>> v = memoryview(data)>>> v.readonlyFalse>>> v[0] = ord(b’z’)>>> databytearray(b’zbcefg’)>>> v[1:4] = b’123’>>> databytearray(b’z123fg’)>>> v[2:3] = b’spam’Traceback (most recent call last): File '<stdin>', line 1, in <module>ValueError: memoryview assignment: lvalue and rvalue have different structures>>> v[2:6] = b’spam’>>> databytearray(b’z1spam’)dict-views

準確的說,這不是一種類型,而是一種概念。然而typing里仍然將其視為一種類型,所以也就羅列在此了。概念:返回自dict.keys(),dict.values()和dict.items()的對象被稱作dict-views。

對于views對象,可以使用len,成員檢測,它本身也是可迭代對象:

>>> dishes = {’eggs’: 2, ’sausage’: 1, ’bacon’: 1, ’spam’: 500}>>> keys = dishes.keys()>>> values = dishes.values()>>> # iteration>>> n = 0>>> for val in values:... n += val>>> print(n)504>>> # keys and values are iterated over in the same order (insertion order)>>> list(keys)[’eggs’, ’sausage’, ’bacon’, ’spam’]>>> list(values)[2, 1, 1, 500]>>> # view objects are dynamic and reflect dict changes>>> del dishes[’eggs’]>>> del dishes[’sausage’]>>> list(keys)[’bacon’, ’spam’]>>> # set operations>>> keys & {’eggs’, ’bacon’, ’salad’}{’bacon’}>>> keys ^ {’sausage’, ’juice’}{’juice’, ’sausage’, ’bacon’, ’spam’}

從例子中可以看出,views保持著元素的插入順序(插入順序的保證從python3.6開始)以及views動態反應了key/value的插入和刪除以及修改,因此在某些場景下views對象是相當有用的。

The Ellipsis Object (...)

`...`不是一個類型,不過算是一個內置對象。它沒什么特殊的含義,僅表示省略,通常被用在type hints中:

>>> ...Ellipsis>>> from typing import Callable>>> func: Callable[..., None] = lambda x,y:print(x*y)

func是一個沒有返回值的函數,參數列表沒有做任何限制。

你也可以寫成Ellipsis,兩者是等價的,不過顯然是...這種形式更簡單明了。

以上就是這些容易被忽略和遺忘的內置類型,如有錯誤和疏漏歡迎指出。

參考:

https://docs.python.org/3/library/stdtypes.html

https://docs.python.org/3/c-api/buffer.html#bufferobjects

以上就是容易被忽略的Python內置類型的詳細內容,更多關于Python內置類型的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆一区二区三| 精品美女视频| 麻豆91在线播放| 国产精品久久国产愉拍| 日本成人在线视频网站| 亚洲精品成a人ⅴ香蕉片| 国产午夜精品一区二区三区欧美 | 欧美福利一区| 欧美日韩一二三四| 午夜久久一区| 国产精品毛片一区二区三区| 黄色欧美日韩| 喷白浆一区二区| 亚洲深夜福利| 日本在线不卡视频| 国产精品综合| 久久精品网址| 国产精品成人a在线观看| 福利一区二区免费视频| 日韩三区免费| 亚洲欧美日韩精品一区二区| 日韩中文一区二区| 国产精品15p| 日韩一区亚洲二区| 91久久午夜| 亚洲18在线| 精品视频一区二区三区在线观看| a日韩av网址| 欧美精品高清| 久久国产精品亚洲77777| 婷婷精品在线| 久久在线91| 三级精品视频| 蜜臀av性久久久久蜜臀aⅴ流畅 | 欧美日韩亚洲三区| 91精品精品| 日韩成人三级| 欧美日韩国产精品一区二区亚洲| 亚洲精品综合| 久久99精品久久久久久园产越南| 亚洲一区二区三区中文字幕在线观看| 91精品一区国产高清在线gif| 国产欧美一区二区精品久久久 | 久久国产成人午夜av影院宅| 婷婷综合社区| 久久久国产精品网站| 99亚洲视频| 精品捆绑调教一区二区三区| 日韩高清成人在线| 丝袜国产日韩另类美女| 精品视频网站| 欧美一区二区三区高清视频| 鲁大师成人一区二区三区| 久久精品国产网站| 日本久久二区| 精品国产a一区二区三区v免费| 欧美亚洲色图校园春色| 精品一二三区| 欧美日韩18| 亚州av一区| 午夜久久av| 黄色不卡一区| 日本欧美一区| 波多野结衣久久精品| 国产日韩欧美在线播放不卡| 国产+成+人+亚洲欧洲在线| 欧美精品自拍| 超碰超碰人人人人精品| 午夜国产精品视频免费体验区| 7m精品国产导航在线| 综合激情视频| 欧美亚洲精品在线| 精品亚洲免a| 亚洲一区二区三区高清不卡| 亚洲精品小说| 一区二区小说| 欧美视频精品全部免费观看| 欧美日韩夜夜| 激情五月色综合国产精品| 色天使综合视频| 久久只有精品| 亚洲综合精品| 欧洲激情综合| 四虎精品一区二区免费| 日韩一级精品| 一区免费视频| 日本中文字幕视频一区| 快she精品国产999| 日本在线视频一区二区| 国产精品99免费看| 蜜臀久久99精品久久久画质超高清| 日本不卡一二三区黄网| 日韩午夜在线| 国产亚洲欧美日韩在线观看一区二区| 国产欧美日韩在线一区二区| 热久久久久久| 日韩三级久久| 亚洲一区二区成人| 日韩av一级| 麻豆传媒一区二区三区| 久久国产乱子精品免费女| 丝袜亚洲精品中文字幕一区| 宅男在线一区| 成人自拍av| 97精品国产| 精品中文在线| 久久爱www.| 91久久精品无嫩草影院| 免费观看久久久4p| 综合干狼人综合首页| 中文日韩在线| 久久一区二区三区喷水| 日韩欧美不卡| 日本欧美不卡| 亚洲www啪成人一区二区| 日韩天堂在线| 日韩精品免费一区二区在线观看| 亚洲高清成人| 在线日韩中文| 久久久人人人| 亚洲二区视频| 九九在线精品| 红桃视频欧美| 国产一区导航| 亚洲综合婷婷| 日韩高清不卡一区| 亚洲一区久久| 久久亚洲美女| 久久国产精品久久久久久电车| 亚洲一区二区三区免费在线观看| 亚洲中字黄色| 中文字幕日本一区二区| 中文字幕av一区二区三区人| 在线看片日韩| 婷婷亚洲成人| 国产精品亚洲四区在线观看| 国产精品片aa在线观看| 国产精品麻豆成人av电影艾秋| 国产精品资源| sm捆绑调教国产免费网站在线观看| 黄色在线网站噜噜噜| 91亚洲国产高清| 不卡中文一二三区| 蜜桃一区二区三区在线| 欧美在线不卡| 羞羞答答国产精品www一本| 免费在线视频一区| 日本少妇精品亚洲第一区| 国产精品久久久久9999高清| 国产成人黄色| 日韩av首页| 中文视频一区| 欧美国产专区| 久久久久免费| 欧美午夜不卡影院在线观看完整版免费| 亚洲尤物在线| 日本视频一区二区| 日本一二区不卡| 亚洲黄色影院| 国产日韩欧美一区在线| 日本欧美不卡| 日韩精品一区二区三区免费视频| 精品国产乱码久久久| 欧美成人午夜| 国产欧美日韩| 91精品久久久久久久久久不卡| 免费精品视频在线| 免费一级欧美片在线观看网站| www.com.cn成人| 天堂av在线一区| 欧美激情亚洲| 久久精品1区| 色综合视频一区二区三区日韩| 精品福利久久久| 午夜在线精品偷拍| 麻豆视频一区二区| 黑丝一区二区三区| 免费日韩成人| 国产精品毛片在线| 精品三级在线| 美女精品一区| 福利片在线一区二区| 日韩国产在线一| 九九精品调教| 国产精品亚洲片在线播放| 神马午夜在线视频| 综合亚洲色图| 日韩欧美中文| 国产丝袜一区| 2023国产精品久久久精品双| 国产欧美综合一区二区三区| 久久免费大视频| 国产日韩高清一区二区三区在线| 欧美日一区二区| 国产精品伦一区二区| 免费美女久久99| 婷婷激情一区| 欧美视频久久| 模特精品在线| sm捆绑调教国产免费网站在线观看|