Python基础之:Python中的内部对象
文章目錄
- 簡(jiǎn)介
- 內(nèi)置函數(shù)
- 內(nèi)置常量
- 內(nèi)置類型
- 邏輯值檢測(cè)
- 邏輯值的布爾運(yùn)算
- 比較運(yùn)算
- 數(shù)字類型
- 整數(shù)類型的位運(yùn)算
- 整數(shù)類型的附加方法
- 浮點(diǎn)類型的附加方法
- 迭代器
- 序列類型
- 集合類型
- 映射類型
- 字典視圖對(duì)象
- 內(nèi)置異常
簡(jiǎn)介
Python中內(nèi)置了很多非常有用的對(duì)象,本文將會(huì)介紹Python中的內(nèi)置函數(shù),內(nèi)置常量,內(nèi)置類型和內(nèi)置異常。
內(nèi)置函數(shù)
Python 解釋器內(nèi)置了很多函數(shù)和類型,您可以在任何時(shí)候使用它們。
| abs() | delattr() | hash() | memoryview() | set() |
| all() | dict() | help() | min() | setattr() |
| any() | dir() | hex() | next() | slice() |
| ascii() | divmod() | id() | object() | sorted() |
| bin() | enumerate() | input() | oct() | staticmethod() |
| bool() | eval() | int() | open() | str() |
| breakpoint() | exec() | isinstance() | ord() | sum() |
| bytearray() | filter() | issubclass() | pow() | super() |
| bytes() | float() | iter() | print() | tuple() |
| callable() | format() | len() | property() | type() |
| chr() | frozenset() | list() | range() | vars() |
| classmethod() | getattr() | locals() | repr() | zip() |
| compile() | globals() | map() | reversed() | __import__() |
| complex() | hasattr() | max() | round() |
內(nèi)置常量
Python中內(nèi)置了少量的常量,我們可以直接在代碼中使用他們。
- False
表示的是bool類型的假值。
- True
表示的是bool類型的真值。
- None
是NoneType類型的唯一值。None表示缺少值。
- NotImplemented
是__eq__(), __lt__(), __add__(), __rsub__()的特殊返回值,表示會(huì)在假值的時(shí)候返回NotImplemented。
- Ellipsis
等同于字面值 … ,主要與用戶定義的容器數(shù)據(jù)類型的擴(kuò)展切片語法結(jié)合使用。
- __debug__
編譯器內(nèi)部的變量,用來表示是否開啟debug模式。
內(nèi)置類型
python中的主要內(nèi)置類型有數(shù)字、序列、映射、類、實(shí)例和異常。
邏輯值檢測(cè)
在python中,任何對(duì)象都可以做邏輯值的檢測(cè)。
一個(gè)對(duì)象在默認(rèn)情況下均被視為真值,除非當(dāng)該對(duì)象被調(diào)用時(shí)其所屬類定義了 __bool__()方法且返回 False 或是定義了 __len__() 方法且返回零。
下面是集中被認(rèn)為是false值的對(duì)象:
- 被定義為假值的常量: None 和 False。
- 任何數(shù)值類型的零: 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
- 空的序列和多項(xiàng)集: '', (), [], {}, set(), range(0)
邏輯值的布爾運(yùn)算
布爾運(yùn)算主要有 or, not和and:
| x or y | if x is false, then y, else x |
| x and y | if x is false, then x, else y |
| not x | if x is false, then True, else False |
比較運(yùn)算
| < | 嚴(yán)格小于 |
| <= | 小于或等于 |
| > | 嚴(yán)格大于 |
| >= | 大于或等于 |
| == | 等于 |
| != | 不等于 |
| is | 對(duì)象標(biāo)識(shí) |
| is not | 否定的對(duì)象標(biāo)識(shí) |
具有不同標(biāo)識(shí)的類的實(shí)例比較結(jié)果通常為不相等,除非類定義了 __eq__()方法。
數(shù)字類型
Python中有三種不同的數(shù)據(jù)類型:整數(shù), 浮點(diǎn)數(shù) 和 復(fù)數(shù)。
所有數(shù)字類型(復(fù)數(shù)除外)都支持下列運(yùn)算:
| x + y | x 和 y 的和 |
| x - y | x 和 y 的差 |
| x * y | x 和 y 的乘積 |
| x / y | x 和 y 的商 |
| x // y | x 和 y 的商數(shù) |
| x % y | x / y 的余數(shù) |
| -x | x 取反 |
| +x | x 不變 |
| abs(x) | x 的絕對(duì)值或大小 |
對(duì)于int 和 float 還支持下面的運(yùn)算:
| math.trunc(x) | x 截?cái)酁?Integral |
| Round(x[, n]) | x 舍入到 n 位小數(shù),半數(shù)值會(huì)舍入到偶數(shù)。 如果省略 n,則默認(rèn)為 0。 |
| math.floor(x) | <= x 的最大 Integral |
| math.ceil(x) | >= x 的最小 Integral |
整數(shù)類型的位運(yùn)算
對(duì)于整數(shù)來說,還支持位運(yùn)算:
| x | y | x 和 y 按位 或 |
| x ^ y | x 和 y 按位 異或 |
| x & y | x 和 y 按位 與 |
| x << n | x 左移 n 位 |
| x >> n | x 右移 n 位 |
| ~x | x 逐位取反 |
整數(shù)類型的附加方法
int 還有一些額外的方法:
int.bit_length()
返回以二進(jìn)制表示一個(gè)整數(shù)所需要的位數(shù),不包括符號(hào)位和前面的零:
>>> n = -37 >>> bin(n) '-0b100101' >>> n.bit_length() 6int.to_bytes(length, byteorder, *, signed=False)
返回表示一個(gè)整數(shù)的字節(jié)數(shù)組。
(1024).to_bytes(2, byteorder='big') b'\x04\x00' (1024).to_bytes(10, byteorder='big') b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00' (-1024).to_bytes(10, byteorder='big', signed=True) b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00' x = 1000 x.to_bytes((x.bit_length() + 7) // 8, byteorder='little') b'\xe8\x03'byteorder 參數(shù)確定用于表示整數(shù)的字節(jié)順序。 如果 byteorder 為 "big",則最高位字節(jié)放在字節(jié)數(shù)組的開頭。 如果 byteorder 為 "little",則最高位字節(jié)放在字節(jié)數(shù)組的末尾。
signed 參數(shù)確定是否使用二的補(bǔ)碼來表示整數(shù)。
浮點(diǎn)類型的附加方法
float.is_integer()
如果 float 實(shí)例可用有限位整數(shù)表示則返回 True,否則返回 False:
>>> (-2.0).is_integer() True >>> (3.2).is_integer() Falsefloat.hex()
以十六進(jìn)制字符串的形式返回一個(gè)浮點(diǎn)數(shù)表示。
迭代器
迭代器主要用在容器的遍歷中。
如果容器需要提供迭代支持,必須定義下面的方法:
container.__iter__()
這個(gè)方法返回一個(gè)迭代器對(duì)象。這個(gè)迭代器對(duì)象需要提供下面的兩個(gè)方法:
iterator.__iter__()
返回迭代器對(duì)象本身。
iterator.__next__()
從容器中返回下一項(xiàng)。
序列類型
有三種基本序列類型:list, tuple 和 range 對(duì)象。
下面是通用的序列操作:
| x in s | 如果 s 中的某項(xiàng)等于 x 則結(jié)果為 True,否則為 False |
| x not in s | 如果 s 中的某項(xiàng)等于 x 則結(jié)果為 False,否則為 True |
| s + t | s 與 t 相拼接 |
| s * n 或 n * s | 相當(dāng)于 s 與自身進(jìn)行 n 次拼接 |
| s[i] | s 的第 i 項(xiàng),起始為 0 |
| s[i:j] | s 從 i 到 j 的切片 |
| s[i:j:k] | s 從 i 到 j 步長(zhǎng)為 k 的切片 |
| len(s) | s 的長(zhǎng)度 |
| min(s) | s 的最小項(xiàng) |
| max(s) | s 的最大項(xiàng) |
| s.index(x[, i[, j]]) | x 在 s 中首次出現(xiàn)項(xiàng)的索引號(hào)(索引號(hào)在 i 或其后且在 j 之前) |
| s.count(x) | x 在 s 中出現(xiàn)的總次數(shù) |
可變序列類型的操作:
| s[i] = x | 將 s 的第 i 項(xiàng)替換為 x |
| s[i:j] = t | 將 s 從 i 到 j 的切片替換為可迭代對(duì)象 t 的內(nèi)容 |
| del s[i:j] | 等同于 s[i:j] = [] |
| s[i:j:k] = t | 將 s[i:j:k] 的元素替換為 t 的元素 |
| del s[i:j:k] | 從列表中移除 s[i:j:k] 的元素 |
| s.append(x) | 將 x 添加到序列的末尾 (等同于 s[len(s):len(s)] = [x]) |
| s.clear() | 從 s 中移除所有項(xiàng) (等同于 del s[:]) |
| s.copy() | 創(chuàng)建 s 的淺拷貝 (等同于 s[:]) |
| s.extend(t) 或 s += t | 用 t 的內(nèi)容擴(kuò)展 s (基本上等同于 s[len(s):len(s)] = t) |
| s *= n | 使用 s 的內(nèi)容重復(fù) n 次來對(duì)其進(jìn)行更新 |
| s.insert(i, x) | 在由 i 給出的索引位置將 x 插入 s (等同于 s[i:i] = [x]) |
| s.pop([i]) | 提取在 i 位置上的項(xiàng),并將其從 s 中移除 |
| s.remove(x) | 刪除 s 中第一個(gè) s[i] 等于 x 的項(xiàng)目。 |
| s.reverse() | 就地將列表中的元素逆序。 |
序列類型包括列表,元組,range對(duì)象和文本序列str。
這里重點(diǎn)看下str的方法:
| str.capitalize() | 返回原字符串的副本,其首個(gè)字符大寫,其余為小寫。 |
| str.casefold() | 返回原字符串消除大小寫的副本。 消除大小寫的字符串可用于忽略大小寫的匹配。 |
| str.center(width[, fillchar]) | 返回長(zhǎng)度為 width 的字符串,原字符串在其正中。 使用指定的 fillchar 填充兩邊的空位(默認(rèn)使用 ASCII 空格符)。 如果 width 小于等于 len(s) 則返回原字符串的副本。 |
| str.count(sub[, start[, end]]) | 反回子字符串 sub 在 [start, end] 范圍內(nèi)非重疊出現(xiàn)的次數(shù)。 可選參數(shù) start 與 end 會(huì)被解讀為切片表示法。 |
| str.encode(encoding=“utf-8”, errors=“strict”) | 返回原字符串編碼為字節(jié)串對(duì)象的版本。 默認(rèn)編碼為 ‘utf-8’。errors 的默認(rèn)值為 ‘strict’,表示編碼錯(cuò)誤會(huì)引發(fā) UnicodeError。 其他可用的值為 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及任何其他通過 codecs.register_error() 注冊(cè)的值 |
| str.endswith(suffix[, start[, end]]) | 如果字符串以指定的 suffix 結(jié)束返回 True,否則返回 False。 suffix 也可以為由多個(gè)供查找的后綴構(gòu)成的元組。 |
| str.expandtabs(tabsize=8) | 返回字符串的副本,其中所有的制表符會(huì)由一個(gè)或多個(gè)空格替換,具體取決于當(dāng)前列位置和給定的制表符寬度。 |
| str.find(sub[, start[, end]]) | 返回子字符串 sub 在 s[start:end] 切片內(nèi)被找到的最小索引。 |
| str.format(args*, kwargs) | 執(zhí)行字符串格式化操作。 |
| str.format_map(mapping) | 類似于 str.format(**mapping),不同之處在于 mapping 會(huì)被直接使用而不是復(fù)制到一個(gè) dict。 |
| str.index(sub[, start[, end]]) | 類似于 find(),但在找不到子類時(shí)會(huì)引發(fā) ValueError。 |
| str.isalnum() | 如果字符串中的所有字符都是字母或數(shù)字且至少有一個(gè)字符,則返回 True , 否則返回 False 。 |
| str.isalpha() | 如果字符串中的所有字符都是字母,并且至少有一個(gè)字符,返回 True ,否則返回 False 。 |
| str.isascii() | 如果字符串為空或字符串中的所有字符都是 ASCII ,返回 True ,否則返回 False 。 |
| str.isdecimal() | 如果字符串中的所有字符都是十進(jìn)制字符且該字符串至少有一個(gè)字符,則返回 True , 否則返回 False 。 |
| str.isdigit() | 如果字符串中的所有字符都是數(shù)字,并且至少有一個(gè)字符,返回 True ,否則返回 False 。 |
| str.isidentifier() | 如果字符串是有效的標(biāo)識(shí)符,返回 True |
| str.islower() | 如果字符串中至少有一個(gè)區(qū)分大小寫的字符 且此類字符均為小寫則返回 True ,否則返回 False 。 |
| str.isnumeric() | 如果字符串中至少有一個(gè)字符且所有字符均為數(shù)值字符則返回 True ,否則返回 False 。 |
| str.isprintable() | 如果字符串中所有字符均為可打印字符或字符串為空則返回 True ,否則返回 False 。 |
| str.isspace() | 如果字符串中只有空白字符且至少有一個(gè)字符則返回 True ,否則返回 False 。 |
| str.istitle() | 如果字符串中至少有一個(gè)字符且為標(biāo)題字符串則返回 True ,例如大寫字符之后只能帶非大寫字符而小寫字符必須有大寫字符打頭。 否則返回 False 。 |
| str.isupper() | 如果字符串中至少有一個(gè)區(qū)分大小寫的字符 4 且此類字符均為大寫則返回 True ,否則返回 False 。 |
| str.join(iterable) | 返回一個(gè)由 iterable 中的字符串拼接而成的字符串。 |
| str.ljust(width[, fillchar]) | 返回長(zhǎng)度為 width 的字符串,原字符串在其中靠左對(duì)齊。 |
| str.lower() | 返回原字符串的副本,其所有區(qū)分大小寫的字符 均轉(zhuǎn)換為小寫。 |
| str.lstrip([chars]) | 返回原字符串的副本,移除其中的前導(dǎo)字符。 |
| str.partition(sep) | 在 sep 首次出現(xiàn)的位置拆分字符串,返回一個(gè) 3 元組,其中包含分隔符之前的部分、分隔符本身,以及分隔符之后的部分。 |
| str.removeprefix(prefix, /) | 如果字符串以 前綴 字符串開頭,返回 string[len(prefix):] 。否則,返回原始字符串的副本 |
| str.removesuffix(suffix, /) | 如果字符串以 后綴 字符串結(jié)尾,并且 后綴 非空,返回 string[:-len(suffix)] 。否則,返回原始字符串的副本 |
| str.replace(old, new[, count]) | 返回字符串的副本,其中出現(xiàn)的所有子字符串 old 都將被替換為 new。 如果給出了可選參數(shù) count,則只替換前 count 次出現(xiàn)。 |
| str.rfind(sub[, start[, end]]) | 返回子字符串 sub 在字符串內(nèi)被找到的最大(最右)索引,這樣 sub 將包含在 s[start:end] 當(dāng)中。 |
| str.rindex(sub[, start[, end]]) | 類似于 rfind(),但在子字符串 sub 未找到時(shí)會(huì)引發(fā) ValueError。 |
| str.rjust(width[, fillchar]) | 返回長(zhǎng)度為 width 的字符串,原字符串在其中靠右對(duì)齊。 |
| str.rpartition(sep) | 在 sep 最后一次出現(xiàn)的位置拆分字符串,返回一個(gè) 3 元組,其中包含分隔符之前的部分、分隔符本身,以及分隔符之后的部分。 如果分隔符未找到,則返回的 3 元組中包含兩個(gè)空字符串以及字符串本身。 |
| str.rsplit(sep=None, maxsplit=-1) | 返回一個(gè)由字符串內(nèi)單詞組成的列表,使用 sep 作為分隔字符串。 如果給出了 maxsplit,則最多進(jìn)行 maxsplit 次拆分,從 最右邊 開始。 |
| str.rstrip([chars]) | 返回原字符串的副本,移除其中的末尾字符。 |
| str.split(sep=None, maxsplit=-1) | 返回一個(gè)由字符串內(nèi)單詞組成的列表,使用 sep 作為分隔字符串。 如果給出了 maxsplit,則最多進(jìn)行 maxsplit 次拆分(因此,列表最多會(huì)有 maxsplit+1 個(gè)元素)。 如果 maxsplit 未指定或?yàn)?-1,則不限制拆分次數(shù)(進(jìn)行所有可能的拆分)。 |
| str.splitlines([keepends]) | 返回由原字符串中各行組成的列表,在行邊界的位置拆分。 結(jié)果列表中不包含行邊界,除非給出了 keepends 且為真值。 |
| str.startswith(prefix[, start[, end]]) | 如果字符串以指定的 prefix 開始則返回 True,否則返回 False。 prefix 也可以為由多個(gè)供查找的前綴構(gòu)成的元組。 如果有可選項(xiàng) start,將從所指定位置開始檢查。 如果有可選項(xiàng) end,將在所指定位置停止比較。 |
| str.strip([chars]) | 返回原字符串的副本,移除其中的前導(dǎo)和末尾字符。 chars 參數(shù)為指定要移除字符的字符串。 如果省略或?yàn)?None,則 chars 參數(shù)默認(rèn)移除空格符。 實(shí)際上 chars 參數(shù)并非指定單個(gè)前綴或后綴;而是會(huì)移除參數(shù)值的所有組合: |
| str.swapcase() | 返回原字符串的副本,其中大寫字符轉(zhuǎn)換為小寫,反之亦然。 |
| str.title() | 返回原字符串的標(biāo)題版本,其中每個(gè)單詞第一個(gè)字母為大寫,其余字母為小寫。 |
| str.upper() | 返回原字符串的副本,其中所有區(qū)分大小寫的字符均轉(zhuǎn)換為大寫。 |
| str.zfill(width) | 返回原字符串的副本,在左邊填充 ASCII '0' 數(shù)碼使其長(zhǎng)度變?yōu)?width。 正負(fù)值前綴 ('+'/'-') 的處理方式是在正負(fù)符號(hào) 之后 填充而非在之前。 如果 width 小于等于 len(s) 則返回原字符串的副本。 |
還包括幾個(gè)二進(jìn)制序列類型: bytes, bytearray, memoryview。
bytes 對(duì)象是由單個(gè)字節(jié)構(gòu)成的不可變序列。
表示 bytes 字面值的語法與字符串字面值的大致相同,只是添加了一個(gè) b 前綴。
bytearray 對(duì)象是 bytes 對(duì)象的可變對(duì)應(yīng)物。bytearray 對(duì)象沒有專屬的字面值語法,它們總是通過調(diào)用構(gòu)造器來創(chuàng)建。
我們看下bytes和bytearray的基本操作:
| bytearray.count(sub[, start[, end]]) | 返回子序列 sub 在 [start, end] 范圍內(nèi)非重疊出現(xiàn)的次數(shù)。 可選參數(shù) start 與 end 會(huì)被解讀為切片表示法。 |
| bytearray.removeprefix(prefix, /) | 如果二進(jìn)制數(shù)據(jù)以 前綴 字符串開頭,返回 bytes[len(prefix):] 。否則,返回原始二進(jìn)制數(shù)據(jù)的副本 |
| bytearray.removesuffix(suffix, /) | 如果二進(jìn)制數(shù)據(jù)以 后綴 字符串結(jié)尾,并且 后綴 非空,返回 bytes[:-len(suffix)] 。否則,返回原始二進(jìn)制數(shù)據(jù)的副本 |
| bytearray.decode(encoding=“utf-8”, errors=“strict”) | 返回從給定 bytes 解碼出來的字符串。 默認(rèn)編碼為 'utf-8'。 |
| bytearray.endswith(suffix[, start[, end]]) | 如果二進(jìn)制數(shù)據(jù)以指定的 suffix 結(jié)束則返回 True,否則返回 False。 |
| bytearray.find(sub[, start[, end]]) | 返回子序列 sub 在數(shù)據(jù)中被找到的最小索引,sub 包含于切片 s[start:end] 之內(nèi)。 |
| bytearray.index(sub[, start[, end]]) | 類似于 find(),但在找不到子序列時(shí)會(huì)引發(fā) ValueError。 |
| bytearray.join(iterable) | 返回一個(gè)由 iterable 中的二進(jìn)制數(shù)據(jù)序列拼接而成的 bytes 或 bytearray 對(duì)象。 |
| bytearray.maketrans(from, to) | 返回一個(gè)可用于 bytes.translate() 的轉(zhuǎn)換對(duì)照表,它將把 from 中的每個(gè)字符映射為 to 中相同位置上的字符;from 與 to 必須都是 字節(jié)類對(duì)象 并且具有相同的長(zhǎng)度。 |
| bytearray.partition(sep) | 在 sep 首次出現(xiàn)的位置拆分序列,返回一個(gè) 3 元組,其中包含分隔符之前的部分、分隔符本身或其 bytearray 副本,以及分隔符之后的部分。 |
| bytearray.replace(old, new[, count]) | 返回序列的副本,其中出現(xiàn)的所有子序列 old 都將被替換為 new。 如果給出了可選參數(shù) count,則只替換前 count 次出現(xiàn)。 |
| bytearray.rfind(sub[, start[, end]]) | 返回子序列 sub 在序列內(nèi)被找到的最大(最右)索引,這樣 sub 將包含在 s[start:end] 當(dāng)中。 可選參數(shù) start 與 end 會(huì)被解讀為切片表示法。 如果未找到則返回 -1。 |
| bytearray.rindex(sub[, start[, end]]) | 類似于 rfind(),但在子序列 sub 未找到時(shí)會(huì)引發(fā) ValueError。 |
| bytearray.rpartition(sep) | 在 sep 最后一次出現(xiàn)的位置拆分序列,返回一個(gè) 3 元組,其中包含分隔符之前的部分,分隔符本身或其 bytearray 副本,以及分隔符之后的部分。 |
| bytearray.startswith(prefix[, start[, end]]) | 如果二進(jìn)制數(shù)據(jù)以指定的 prefix 開頭則返回 True,否則返回 False。 |
| bytearray.translate(table, /, delete=b’’) | 返回原 bytes 或 bytearray 對(duì)象的副本,移除其中所有在可選參數(shù) delete 中出現(xiàn)的 bytes,其余 bytes 將通過給定的轉(zhuǎn)換表進(jìn)行映射,該轉(zhuǎn)換表必須是長(zhǎng)度為 256 的 bytes 對(duì)象。 |
| bytearray.center(width[, fillbyte]) | 返回原對(duì)象的副本,在長(zhǎng)度為 width 的序列內(nèi)居中,使用指定的 fillbyte 填充兩邊的空位(默認(rèn)使用 ASCII 空格符)。 對(duì)于 bytes 對(duì)象,如果 width 小于等于 len(s) 則返回原序列的副本。 |
| bytearray.ljust(width[, fillbyte]) | 返回原對(duì)象的副本,在長(zhǎng)度為 width 的序列中靠左對(duì)齊。 |
| bytearray.lstrip([chars]) | 返回原序列的副本,移除指定的前導(dǎo)字節(jié)。 |
| bytearray.rjust(width[, fillbyte]) | 返回原對(duì)象的副本,在長(zhǎng)度為 width 的序列中靠右對(duì)齊。 |
| bytearray.rsplit(sep=None, maxsplit=-1) | 將二進(jìn)制序列拆分為相同類型的子序列,使用 sep 作為分隔符。 |
| bytearray.rstrip([chars]) | 返回原序列的副本,移除指定的末尾字節(jié)。 |
| bytearray.split(sep=None, maxsplit=-1) | 將二進(jìn)制序列拆分為相同類型的子序列,使用 sep 作為分隔符。 |
| bytearray.strip([chars]) | 返回原序列的副本,移除指定的開頭和末尾字節(jié)。 |
| bytearray.capitalize() | 返回原序列的副本,其中每個(gè)字節(jié)將都將被解讀為一個(gè) ASCII 字符,并且第一個(gè)字節(jié)的字符大寫而其余的小寫。 非 ASCII 字節(jié)值將保持原樣不變。 |
| bytearray.expandtabs(tabsize=8) | 返回序列的副本,其中所有的 ASCII 制表符會(huì)由一個(gè)或多個(gè) ASCII 空格替換,具體取決于當(dāng)前列位置和給定的制表符寬度。 |
| bytearray.isalnum() | 如果序列中所有字節(jié)都是字母類 ASCII 字符或 ASCII 十進(jìn)制數(shù)碼并且序列非空則返回 True ,否則返回 False 。 |
| bytearray.isalpha() | 如果序列中所有字節(jié)都是字母類 ASCII 字符并且序列不非空則返回 True ,否則返回 False 。 |
| bytearray.isascii() | 如果序列為空或序列中所有字節(jié)都是 ASCII 字節(jié)則返回 True ,否則返回 False 。 |
| bytearray.isdigit() | 如果序列中所有字節(jié)都是 ASCII 十進(jìn)制數(shù)碼并且序列非空則返回 True ,否則返回 False 。 |
| bytearray.islower() | 如果序列中至少有一個(gè)小寫的 ASCII 字符并且沒有大寫的 ASCII 字符則返回 True ,否則返回 False 。 |
| bytearray.isspace() | 如果序列中所有字節(jié)都是 ASCII 空白符并且序列非空則返回 True ,否則返回 False 。 |
| bytearray.istitle() | 如果序列為 ASCII 標(biāo)題大小寫形式并且序列非空則返回 True ,否則返回 False 。 |
| bytearray.isupper() | 如果序列中至少有一個(gè)大寫字母 ASCII 字符并且沒有小寫 ASCII 字符則返回 True ,否則返回 False 。 |
| bytearray.lower() | 返回原序列的副本,其所有大寫 ASCII 字符均轉(zhuǎn)換為對(duì)應(yīng)的小寫形式。 |
| bytearray.splitlines(keepends=False) | 返回由原二進(jìn)制序列中各行組成的列表,在 ASCII 行邊界符的位置拆分。 |
| bytearray.swapcase() | 返回原序列的副本,其所有小寫 ASCII 字符均轉(zhuǎn)換為對(duì)應(yīng)的大寫形式,反之亦反。 |
| bytearray.title() | 返回原二進(jìn)制序列的標(biāo)題版本,其中每個(gè)單詞以一個(gè)大寫 ASCII 字符為開頭,其余字母為小寫。 不區(qū)別大小寫的字節(jié)值將保持原樣不變。 |
| bytearray.upper() | 返回原序列的副本,其所有小寫 ASCII 字符均轉(zhuǎn)換為對(duì)應(yīng)的大寫形式。 |
| bytearray.zfill(width) | 返回原序列的副本,在左邊填充 b'0' 數(shù)碼使序列長(zhǎng)度為 width。 正負(fù)值前綴 (b'+'/ b'-') 的處理方式是在正負(fù)符號(hào) 之后 填充而非在之前。 |
memoryview 對(duì)象允許 Python 代碼訪問一個(gè)對(duì)象的內(nèi)部數(shù)據(jù),只要該對(duì)象支持 緩沖區(qū)協(xié)議 而無需進(jìn)行拷貝。
obj 必須支持緩沖區(qū)協(xié)議。 支持緩沖區(qū)協(xié)議的內(nèi)置對(duì)象包括 bytes 和 bytearray。
集合類型
集合中存放的是不重復(fù)的數(shù)據(jù)。主要有set 和 frozenset兩種。
set 類型是可變的 — 其內(nèi)容可以使用 add() 和 remove() 這樣的方法來改變。 由于是可變類型,它沒有哈希值,且不能被用作字典的鍵或其他集合的元素。
frozenset 類型是不可變并且為 hashable — 其內(nèi)容在被創(chuàng)建后不能再改變;因此它可以被用作字典的鍵或其他集合的元素。
看下集合的基本操作:
| len(s) | 返回集合 s 中的元素?cái)?shù)量(即 s 的基數(shù))。 |
| x in s | 檢測(cè) x 是否為 s 中的成員。 |
| x not in s | 檢測(cè) x 是否非 s 中的成員。 |
| isdisjoint(other) | 如果集合中沒有與 other 共有的元素則返回 True。 當(dāng)且僅當(dāng)兩個(gè)集合的交集為空集合時(shí),兩者為不相交集合。 |
| issubset(other) 或者 set <= other | 檢測(cè)是否集合中的每個(gè)元素都在 other 之中。 |
| set < other | 檢測(cè)集合是否為 other 的真子集,即 set <= other and set != other。 |
| issuperset(other) 或者 set >= other | 檢測(cè)是否 other 中的每個(gè)元素都在集合之中。 |
| set > other | 檢測(cè)集合是否為 other 的真超集,即 set >= other and set != other。 |
| union(*others) 或者 set | other | … | 返回一個(gè)新集合,其中包含來自原集合以及 others 指定的所有集合中的元素。 |
| intersection(*others) 或者set & other & … | 返回一個(gè)新集合,其中包含原集合以及 others 指定的所有集合中共有的元素。 |
| difference(*others) 或者 set - other - … | 返回一個(gè)新集合,其中包含原集合中在 others 指定的其他集合中不存在的元素。 |
| symmetric_difference(other) 或者 set ^ other | 返回一個(gè)新集合,其中的元素或?qū)儆谠匣驅(qū)儆?other 指定的其他集合,但不能同時(shí)屬于兩者。 |
| copy() | 返回原集合的淺拷貝。 |
映射類型
python中的映射類型是dict。只要是hashable的對(duì)象都可以作為dict的key。
字典可用多種方式來創(chuàng)建:
- 使用花括號(hào)內(nèi)以逗號(hào)分隔 鍵: 值 對(duì)的方式: {'jack': 4098, 'sjoerd': 4127} or {4098: 'jack', 4127: 'sjoerd'}
- 使用字典推導(dǎo)式: {}, {x: x ** 2 for x in range(10)}
- 使用類型構(gòu)造器: dict(), dict([('foo', 100), ('bar', 200)]), dict(foo=100, bar=200)
如果沒有給出位置參數(shù),將創(chuàng)建一個(gè)空字典。
字典的操作:
| list(d) | 返回字典 d 中使用的所有鍵的列表。 |
| len(d) | 返回字典 d 中的項(xiàng)數(shù)。 |
| d[key] | 返回 d 中以 key 為鍵的項(xiàng)。 |
| d[key] = value | 將 d[key] 設(shè)為 value。 |
| del d[key] | 將 d[key] 從 d 中移除。 |
| key in d | 如果 d 中存在鍵 key 則返回 True,否則返回 False。 |
| key not in d | 等價(jià)于 not key in d。 |
| iter(d) | 返回以字典的鍵為元素的迭代器。 這是 iter(d.keys()) 的快捷方式。 |
| clear() | 移除字典中的所有元素。 |
| copy() | 返回原字典的淺拷貝。 |
| get(key[, default]) | 如果 key 存在于字典中則返回 key 的值,否則返回 default。 如果 default 未給出則默認(rèn)為 None |
| items() | 返回由字典鍵組成的一個(gè)新視圖。 |
| pop(key[, default]) | 如果 key 存在于字典中則將其移除并返回其值,否則返回 default。 |
| popitem() | 從字典中移除并返回一個(gè) (鍵, 值) 對(duì)。 鍵值對(duì)會(huì)按 LIFO 的順序被返回。 |
| reversed(d) | 返回一個(gè)逆序獲取字典鍵的迭代器。 這是 reversed(d.keys()) 的快捷方式。 |
| setdefault(key[, default]) | 如果字典存在鍵 key ,返回它的值。如果不存在,插入值為 default 的鍵 key ,并返回 default 。 default 默認(rèn)為 None。 |
| update([other]) | 使用來自 other 的鍵/值對(duì)更新字典,覆蓋原有的鍵。 返回 None。 |
| values() | 返回由字典值組成的一個(gè)新視圖。 |
| d | other | 合并 d 和 other 中的鍵和值來創(chuàng)建一個(gè)新的字典,兩者必須都是字典。當(dāng) d 和 other 有相同鍵時(shí), other 的值優(yōu)先。 |
| d |= other | 用 other 的鍵和值更新字典 d ,other 可以是 mapping 或 iterable 的鍵值對(duì)。當(dāng) d 和 other 有相同鍵時(shí), other 的值優(yōu)先。 |
字典視圖對(duì)象
由 dict.keys(), dict.values() 和 dict.items() 所返回的對(duì)象是 視圖對(duì)象。 該對(duì)象提供字典條目的一個(gè)動(dòng)態(tài)視圖,這意味著當(dāng)字典改變時(shí),視圖也會(huì)相應(yīng)改變。
字典視圖可以被迭代以產(chǎn)生與其對(duì)應(yīng)的數(shù)據(jù),并支持成員檢測(cè):
| len(dictview) | 返回字典中的條目數(shù)。 |
| iter(dictview) | 返回字典中的鍵、值或項(xiàng)(以 (鍵, 值) 為元素的元組表示)的迭代器。 |
| x in dictview | 如果 x 是對(duì)應(yīng)字典中存在的鍵、值或項(xiàng)(在最后一種情況下 x 應(yīng)為一個(gè) (鍵, 值) 元組) 則返回 True。 |
| reversed(dictview) | 返回一個(gè)逆序獲取字典鍵、值或項(xiàng)的迭代器。 視圖將按與插入時(shí)相反的順序進(jìn)行迭代。 |
內(nèi)置異常
Python中所有的異常都來自BaseException ,我們看下內(nèi)置異常的層級(jí)結(jié)構(gòu):
BaseException+-- SystemExit+-- KeyboardInterrupt+-- GeneratorExit+-- Exception+-- StopIteration+-- StopAsyncIteration+-- ArithmeticError| +-- FloatingPointError| +-- OverflowError| +-- ZeroDivisionError+-- AssertionError+-- AttributeError+-- BufferError+-- EOFError+-- ImportError| +-- ModuleNotFoundError+-- LookupError| +-- IndexError| +-- KeyError+-- MemoryError+-- NameError| +-- UnboundLocalError+-- OSError| +-- BlockingIOError| +-- ChildProcessError| +-- ConnectionError| | +-- BrokenPipeError| | +-- ConnectionAbortedError| | +-- ConnectionRefusedError| | +-- ConnectionResetError| +-- FileExistsError| +-- FileNotFoundError| +-- InterruptedError| +-- IsADirectoryError| +-- NotADirectoryError| +-- PermissionError| +-- ProcessLookupError| +-- TimeoutError+-- ReferenceError+-- RuntimeError| +-- NotImplementedError| +-- RecursionError+-- SyntaxError| +-- IndentationError| +-- TabError+-- SystemError+-- TypeError+-- ValueError| +-- UnicodeError| +-- UnicodeDecodeError| +-- UnicodeEncodeError| +-- UnicodeTranslateError+-- Warning+-- DeprecationWarning+-- PendingDeprecationWarning+-- RuntimeWarning+-- SyntaxWarning+-- UserWarning+-- FutureWarning+-- ImportWarning+-- UnicodeWarning+-- BytesWarning+-- ResourceWarning本文已收錄于 http://www.flydean.com/11-python-inner-obj/
最通俗的解讀,最深刻的干貨,最簡(jiǎn)潔的教程,眾多你不知道的小技巧等你來發(fā)現(xiàn)!
歡迎關(guān)注我的公眾號(hào):「程序那些事」,懂技術(shù),更懂你!
總結(jié)
以上是生活随笔為你收集整理的Python基础之:Python中的内部对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python基础之:Python中的异常
- 下一篇: maven中心仓库OSSRH使用简介