3 Python的數據類型

概述

????????在上一節,我們介紹了Python的基礎語法,包括:編碼格式、標識符、關鍵字、注釋、多行、空行、縮進、引號、輸入輸出、import、運算符、條件控制、循環等內容。Python是一種動態類型的編程語言,這意味著當你創建一個變量時,不需要提前聲明它的數據類型。Python會自動處理這種情況,并在需要時進行類型轉換。

????????Python提供了豐富多樣的數據類型,以滿足各種不同的編程需求。理解和掌握這些數據類型的特點、屬性和用法,對于編寫高效、可靠的Python代碼至關重要。Python中的數據類型可以分為兩種:基礎類型和復雜類型。基礎類型包括:數字、字符串等,復雜類型包括:列表、元組、集合、字典等。

????????Python的數據類型可以分為兩個大類:不可變數據類型和可變數據類型。

????????不可變數據類型是指:當該數據類型對應變量的值發生了改變,它對應的內存地址也會發生改變。不可變數據類型包括:數字、字符串、元組。比如:變量a=66后,再賦值a=88,這里實際是新生成了一個數字對象88,再讓 a指向它,而原來的數字對象66被丟棄;此時并沒有改變a的值,相當于新生成了a。

????????可變數據類型是指:當該數據類型對應變量的值發生了改變,它對應的內存地址不會發生改變。可變數據類型包括:列表、集合、字典。比如:變量a=[98, 99, 100]后,再賦值a[1]=50,只是將a的第二個元素值更改,a本身沒有修改。

Number(數字)

????????Python中的數字支持4種類型,分別為:int、float、bool和complex。

????????整型(int):用于表示正整數、負整數和0,其取值范圍是無限的。

????????浮點型(float):用于表示帶有小數點的數值,浮點型的大小也是無限的,可以表示很大的浮點數。

????????布爾型(bool):用于表示真、假兩種狀態,只有兩個取值:True和False,常用于邏輯運算和控制語句。

????????復數型(complex):由實部和虛部組成,可以用a + bj的形式表示,其中,a為實部,b為虛部。在Python中,還可以使用complex函數來創建一個復數,比如:a = complex(66, 88)。

????????那么,如何區分這4種數字類型呢?可以使用type函數和isinstance函數。type函數用于獲取某個變量的數據類型,isinstance函數用于判斷某個變量是否為某個數據類型的實例(包括父類實例和子類實例)。

a = 10
b = 6.9
c = True
d = 25 + 36j
# 輸出:<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
print(type(a), type(b), type(c), type(d))# 以下均輸出:True
print(isinstance(a, int))
print(isinstance(b, float))
print(isinstance(c, bool), isinstance(c, int))
print(isinstance(d, complex))

????????另外,布爾型是整型的子類,這也就意味著,True和False可以與數字進行算數運算。True相當于1,False相當于0。

a = True + 5
b = 9 - False
# 輸出:6 9 True True
print(a, b, True == 1, False == 0)

String(字符串)

????????字符串是Python中的文本數據,用于表示一串字符。字符串是由單引號、雙引號或三引號括起來的多個字符組成的序列,其長度(即字符數)可以是任意的。字符串從左邊算起時,索引從0開始計數;從右邊算起時,索引從-1開始計數。

?????????要獲取字符串的子串,可以使用變量[下標]或變量[頭下標:尾下標]的格式。變量[下標]只能獲取包含單個字符的字符串,變量[頭下標:尾下標]能獲取頭下標到尾下標之間(注意:包括頭下標,不包括尾下標)的字符串。頭下標不寫時,默認為0;尾下標不寫時,默認為到最右邊的所有字符。字符串的下標可以超過索引范圍,超過后,會自動被限制為可用的極限值。

a = 'hello'
# 輸出:hello
print(a)
# 輸出:e
print(a[1])
# 輸出:hell
print(a[0:-1])
# 輸出:hello
print(a[0:])
# 輸出:hell
print(a[:-1])
# 輸出:hello
print(a[:])
# 輸出:el
print(a[1:-2])
# 輸出:hel
print(a[-5:3])
# 輸出:hello
print(a[-16:99])

????????字符串還可以使用+符號進行拼接,使用*符號進行拷貝,使用\符號轉義特殊字符。當然,如果不想讓\符號發生轉義,也是可以的:在字符串前面添加一個r或R即可,以表示后面的是一個原始字符串。

a = 'hello'
b = a + ' CSDN'
# 輸出:hello CSDN
print(b)c = a * 2
# 輸出:hellohello
print(c)d = 3 * a
# 輸出:hellohellohello
print(d)e = 'hello\nCSDN'
# 輸出:hello
#CSDN
print(e)f = r'hello\nCSDN'
# 輸出:hello\nCSDN
print(f)

????????與C/C++、Java等語言不同,Python中的字符串不能被改變。試圖向字符串的索引位置賦值時,比如:a[1]='P',會提示類似下面的錯誤信息:'str' object does not support item assignment。Python也沒有單獨的字符類型(比如:C/C++中的char類型),一個字符就是長度為1的字符串。

List(列表)

????????列表是Python中的有序集合數據類型,可以包含任意類型的元素(同一個列表中的數據類型可以不同)。列表是通過方括號括起來,用逗號進行分隔的元素序列,支持各種操作,包括:元素的添加、刪除、修改、查找等。

????????與字符串一樣,列表也可以被索引和截取。列表被截取后,返回一個包含所需元素的新列表。

a = [10, 20, 30, 40, 50]
# 輸出:20 50 [30, 40] [30, 40, 50]
print(a[1], a[-1], a[2:-1], a[2:])
# 輸出:[10, 20, 30, 40, 50]
print(a[-10:10])

????????列表還可以使用+符號進行拼接,使用*符號進行拷貝。如果要判斷一個元素是否在列表中,可以使用in關鍵字。如果要遍歷一個列表,則可以使用for in。反向遍歷時,使用[::-1]。第一個冒號兩邊省略數字,表示所有元素;第二個冒號右邊為-1,表示列表元素反向遍歷。

a = [10, 20, 30]
# 輸出:[10, 20, 30, 10, 20, 30]
print(a * 2)
# 輸出:[10, 20, 30, 1, 2]
print(a + [1, 2])
# 輸出:False True
print(66 in a, 20 in a)
# 正向遍歷,依次輸出:10 20 30
for item in a:print(item)
# 反向遍歷,依次輸出:30 20 10
for item in a[::-1]:print(item)

????????Python中包含一些全局方法,用于獲取列表的元素個數、列表元素的最大值、列表元素的最小值、列表元素的總和,分別為:len、max、min、sum。

a = [10, 20, 30]
# 輸出:3
print(len(a))
# 輸出:30
print(max(a))
# 輸出:10
print(min(a))
# 輸出:60
print(sum(a))

????????除了全局方法,列表自身還有一些成員方法,用于對列表進行添加、插入、移除、統計、反轉等操作,分別為:append、insert、remove、count、reverse等。

a = [10, 20, 30]
a.append(66)
a.append(20)
# 輸出:[10, 20, 30, 66, 20]
print(a)
# 統計元素20的個數,輸出:2
print(a.count(20))
# 查找第一個值匹配的元素的位置,輸出:2
print(a.index(30))
# 100不在列表中,運行會報錯:100 is not in list
# print(a.index(100))
# 移除最后一個元素并返回,輸出:20
print(a.pop())
# 輸出:[10, 20, 30, 66]
print(a)
# 在某個位置插入一個元素
a.insert(0, 99)
# 輸出:[99, 10, 20, 30, 66]
print(a)
# 反轉列表
a.reverse()
# 輸出:[66, 30, 20, 10, 99]
print(a)
# 移除第一個值匹配的元素
a.remove(30)
# 輸出:[66, 20, 10, 99]
print(a)
# 35不在列表中,運行會報錯:x not in list
# a.remove(35)
# 追加另一個序列中的元素
a.extend(["hello", "CSDN"])
# 輸出:[66, 20, 10, 99, 'hello', 'CSDN']
print(a)
# 清空列表
a.clear()
# 輸出:[]
print(a)

????????注意:列表的index和remove方法在找不到元素時,運行時會報錯,而不是像其他語言一樣返回-1,或者什么也不做。因此,使用index和remove方法,更好的方式是像下面這樣。

a = [10, 20, 30]
index = a.index(66) if 66 in a else -1
# 輸出:-1
print(index)
if 20 in a:a.remove(20)
# 輸出:[10, 30]
print(a)

????????列表的比較可以直接使用>、<、==、!=等運算符。只有當兩個列表的元素個數、每個位置上的元素的類型和值都相等時,兩個列表才相等。注意:不同類型的列表不能比較,運行時會報類似下面的錯誤信息:'<' not supported between instances of 'int' and 'str'。

a = [10, 20, 30]
b = [20, 10, 30]
# 輸出:False
print(a > b)
b = [10, 20, 30]
# 輸出:True
print(a == b)
b = ['hello', 'CSDN']
# 不同類型的列表比較會報錯,提示:'<' not supported between instances of 'int' and 'str'
# print(a < b)

Tuple(元組)

????????元組與列表類似,是由小括號括起來的元素序列,通常用于表示一組固定的數據。與列表不同,元組是不可變的,也就是說,無法修改元組中的元素。

????????注意:當元組中只包含一個元素時,需要在該元素后面添加逗號。否則,小括號會被當作運算符使用,導致類型不正確。

a = ('hello', 'CSDN', 'Go')
# 輸出:<class 'tuple'>
print(type(a))
a = ()
# 空元組,輸出:<class 'tuple'>
print(type(a))
a = (66)
# 一個元素時,沒有逗號,a被認為是整型,輸出:<class 'int'>
print(type(a))
a = (66, )
# 一個元素時,有逗號,a被認為是元組,輸出:<class 'tuple'>
print(type(a))

????????與字符串、列表一樣,元組也可以被索引和截取,并支持+符號拼接、*符號拷貝,以及len、max、min、sum等全局方法,這里就不再贅述了。元組中的元素是不允許被修改的,嘗試給其賦值(比如:a[0] = 66)會提示類似下面的錯誤信息:'tuple' object does not support item assignment。

a = (10, 20, 30, 40, 50)
# 輸出:20 50 (30, 40) (30, 40, 50)
print(a[1], a[-1], a[2:-1], a[2:])
# 輸出:(10, 20, 30, 40, 50)
print(a[-10:10])a = (10, 20, 30)
# 輸出:(10, 20, 30, 10, 20, 30)
print(a * 2)
# 輸出:(10, 20, 30, 1, 2)
print(a + (1, 2))
# 輸出:False True
print(66 in a, 20 in a)
# 正向遍歷,依次輸出:10 20 30
for item in a:print(item)
# 反向遍歷,依次輸出:30 20 10
for item in a[::-1]:print(item)a = (10, 20, 30)
# 輸出:3
print(len(a))
# 輸出:30
print(max(a))
# 輸出:10
print(min(a))
# 輸出:60
print(sum(a))

Set(集合)

????????Python中的集合是由大括號括起來的無序的元素序列,不能包含重復的元素。集合支持數學中的集合運算,比如:并集、交集、差集等。要創建一個集合,可以使用大括號{}或者set函數。注意:創建一個空集合,必須使用set函數,而不能使用{},因為{}被用來創建下面將要介紹的空字典。

a = {66, 88, 99}
# 使用大括號創建集合,輸出:{88, 66, 99}
print(a)
a = {66, 88, 99, 66, 88}
# 集合會自動移除重復元素,輸出:{88, 66, 99}
print(a)
a = set(['a', 'b', 'c'])
# 使用set函數從列表創建集合,輸出:{'a', 'c', 'b'}
print(a)
a = set('CSDN')
# 使用set函數從字符串創建集合,輸出:{'S', 'N', 'D', 'C'}
print(a)
a = set()
# 使用set函數創建空集合,輸出:set()
print(a)

????????向集合中添加元素可以使用add函數,向集合中添加元素、列表、元組、字典可以使用update函數。如果元素在集合中已存在,則不進行任何操作。從集合中移除元素可以使用remove函數和discard函數,其區別在于:如果元素不存在,remove函數會報錯,而discard函數則不會報錯。pop函數可以隨機移除集合中的一個元素,當集合為空時,pop函數會報錯。clear函數用于清空集合中的所有元素。

a = {66, 88, 99}
# 輸出:3
print(len(a))
a.add(100)
# 輸出:{88, 66, 99, 100}
print(a)
a.update([1, 2, 3])
# 輸出:{1, 66, 99, 100, 2, 3, 88}
print(a)
a.remove(1)
# 輸出:{66, 99, 100, 2, 3, 88}
print(a)
a.discard(2)
a.discard(5)
# 輸出:{66, 99, 100, 3, 88}
print(a)
a.pop()
# 輸出:{99, 100, 3, 88}
print(a)
a.clear()
# 輸出:set()
print(a)

????????集合還支持數學中的集合運算,比如:并集、交集、差集等。運算符|、&、-、^分別用于計算兩個集合的并集、交集、差集、異或集,對應函數union、intersection、difference、symmetric_difference。

a = set('hello')
b = set('hope')
# 計數集合a和b的并集,輸出:{'e', 'p', 'h', 'o', 'l'}
print(a | b)
# 計數集合a和b的交集,輸出:{'e', 'h', 'o'}
print(a & b)
# 計數在集合a,不在集合b的元素,輸出:{'l'}
print(a - b)
# 計算不同時包含于集合a和b的元素,輸出:{'l', 'p'}
print(a ^ b)# 計數集合a和b的并集,輸出:{'e', 'p', 'h', 'o', 'l'}
print(a.union(b))
# 計數集合a和b的交集,輸出:{'e', 'h', 'o'}
print(a.intersection(b))
# 計數在集合a,不在集合b的元素,輸出:{'l'}
print(a.difference(b))
# 計算不同時包含于集合a和b的元素,輸出:{'l', 'p'}
print(a.symmetric_difference(b))

Dictionary(字典)

????????字典是Python中的鍵值對數據類型,用于存儲鍵值對映射關系。字典是由鍵值對組成的無序集合,鍵必須是唯一的,值可以不唯一。字典的內容在大括號{}內,鍵值對之間使用逗號進行分隔,鍵值之間使用冒號進行分隔。

a = {}
# 空字典,輸出:{} 0 <class 'dict'>
print(a, len(a), type(a))
a = {'red': 6, 'blue': 9, 'green': 12}
# 輸出:9
print(a['blue'])
# 鍵不存在時,運行會報錯:KeyError: 'black'
# print(a['black'])
if 'white' not in a:print('white not in a')
# 移除某個鍵,必須確保鍵存在,否則運行時會報錯
del a['green']
# 輸出:{'red': 6, 'blue': 9}
print(a)

????????字典提供快速查找、訪問鍵值對的功能和接口。

????????get(key, default=None):返回指定鍵的值,如果鍵不在字典中,則返回default設置的默認值。

????????setdefault(key, default=None):如果key在字典中,返回對應的值。如果不在字典中,則插入key及設置的默認值 default,并返回 default。

????????pop(key[,default]):刪除字典key所對應的值,返回被刪除的值。

????????popitem():返回并刪除字典中的最后一對鍵和值。

????????items():返回一個鍵值對的視圖對象。

????????keys():返回一個鍵的視圖對象。

????????values():返回一個值的視圖對象。

????????clear():刪除字典內所有元素。

????????fromkeys(seq[, value]):創建一個新字典,以序列seq中的元素做字典的鍵,value為字典所有鍵對應的初始值。

a = {'red': 6, 'blue': 9, 'green': 12}
# 輸出:9
print(a.get('blue'))
# 輸出:100
print(a.get('black', 100))
# 輸出:12
print(a.setdefault('green'))
# 輸出:100
print(a.setdefault('white', 100))
# 輸出:{'red': 6, 'blue': 9, 'green': 12, 'white': 100}
print(a)
a.pop('red')
# 輸出:{'blue': 9, 'green': 12, 'white': 100}
print(a)
a.popitem()
# 輸出:{'blue': 9, 'green': 12}
print(a)
# 依次輸出:blue 9, green 12
for m, n in a.items():print(m, n)
# 依次輸出:blue, green
for k in a.keys():print(k)
# 依次輸出:9, 12
for v in a.values():print(v)
a.clear()
# 輸出:{}
print(a)
a = dict.fromkeys(['lemon', 'apple', 'banana'], 99)
# 輸出:{'lemon': 99, 'apple': 99, 'banana': 99}
print(a)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42209.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42209.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42209.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

1.初識Web

文章目錄 1. 什么是Web?2.初始Web前端2.1.Web標準 1. 什么是Web? web:全球廣域網&#xff0c;也稱萬維網(www World Wide Web)&#xff0c;能夠通過瀏覽器訪問的網站。 2.初始Web前端 網頁有哪些部分組成&#xff1f; 文字、圖片、音頻、視頻、超鏈接… 我們看到的網頁&am…

react 生命周期方法

組件的生命周期 每個組件都包含 “生命周期方法”&#xff0c;你可以重寫這些方法&#xff0c;以便于在運行過程中特定的階段執行這些方法。你可以使用此生命周期圖譜作為速查表。在下述列表中&#xff0c;常用的生命周期方法會被加粗。其余生命周期函數的使用則相對罕見。 掛…

Windows Oracle21C與PLSQL Developer 15配置

1、下載Oracle21c并安裝 下載地址&#xff1a;https://www.oracle.com/database/technologies/oracle21c-windows-downloads.html 2、下載PLSQL Developer 15并安裝 下載地址&#xff1a;https://www.allroundautomations.com/products/pl-sql-developer/#pricing 3、配置O…

TypeScript教程(四)基本運算符

一、運算符 TypeScript包含以下幾種運算符&#xff1a; 1.算術運算符 2.邏輯運算符 3.關系運算符 4.按位運算符 5.賦值運算符 6.三元/條件運算符 7.字符串運算符 8.類型運算符 1.算術運算符 y5 運算符描述例子x 運算結果y 運算結果加法xy275-減法xy-235*乘法xy*2105…

在線課堂錄播直播管理系統SpringBoot+Vue

在線課堂錄播直播管理系統SpringBootVue 文章目錄 在線課堂錄播直播管理系統SpringBootVue共三個端&#xff1a;后端、后臺管理系統、前端&#xff0c;如要學習看評論區&#xff08;全部源碼、文檔、數據庫&#xff09;。內置功能一、前端二、后臺管理三、后端--代碼全有。四、…

數據結構—排序

8.排序 8.1排序的概念 什么是排序&#xff1f; 排序&#xff1a;將一組雜亂無章的數據按一定規律順序排列起來。即&#xff0c;將無序序列排成一個有序序列&#xff08;由小到大或由大到小&#xff09;的運算。 如果參加排序的數據結點包含多個數據域&#xff0c;那么排序往…

ElasticSearch刪除索引【真實案例】

文章目錄 背景分析解決遇到的問題 - 刪除超時報錯信息解決辦法1:調大超時時間解決辦法2:調大ES堆內存參考背景 項目中使用了ELK技術棧實現了日志管理,但是日志管理功能目前并沒有在生產上實際使用。 但ELK程序依然在運行,導致系統磁盤發生告警,剩余可用磁盤不足10%。 所以…

async和await

一&#xff0c;基本使用 其實就是之前學過的異步函數&#xff0c;異步編程在函數前寫一個ansyc&#xff0c;就轉化為異步函數&#xff0c;返回的是一個promise對象&#xff0c;于是就可以使用await關鍵字&#xff0c;可以把異步函數寫成同步函數的形式&#xff0c;極大地提高代…

LVS-DR的RS進行ARP抑制的原因和LVS持久連接配置

一.RS的ARP抑制 1.為什么要抑制 2.如何抑制 &#xff08;1&#xff09;修改/etc/sysctl.conf文件&#xff0c;增加以下內容 &#xff08;2&#xff09;命令行臨時設置 二.LVS持久連接 1.客戶端持久連接 2.端口持久連接 3.防火墻標記持久連接 一.RS的ARP抑制 1.為什么要…

Binary operator ‘*‘ cannot be applied to two ‘Double?‘ operands

在 swift 中聲明 Double 類型參數變量在進行運算處理時拋出了如下異常 Binary operator * cannot be applied to two Double? operands 情況一 參數類型不匹配,需將參數類型進行匹配 self.max height / (length * width) // 初始 self.max height / (length * Double(wid…

Java“牽手”根據關鍵詞搜索(分類搜索)京東商品列表頁面數據獲取方法,京東API實現批量商品數據抓取示例

京東商城是一個網上購物平臺&#xff0c;售賣各類商品&#xff0c;包括服裝、鞋類、家居用品、美妝產品、電子產品等。要獲取京東商品列表和商品詳情頁面數據&#xff0c;您可以通過開放平臺的接口或者直接訪問京東商城的網頁來獲取商品詳情信息。以下是兩種常用方法的介紹&…

學校信息管理系統說明文檔

目錄 0學生信息管理系統體驗教程. 4 0.0Student management異地打開方法&#xff1a;. 4 1. 管理系統設計需求分析. 6 1.1 需求介紹. 6 1.2功能需求. 6 1.2.1 學生信息錄入. 6 1.2.2 學生信息查詢. 6 1.2.3 權限管理. 6 1.2.4 添加學生信息驗證. 6 2.功能介紹. 7 2.1…

快速上手PyCharm指南

PyCharm簡介 PyCharm是一種Python IDE&#xff08;Integrated Development Environment&#xff0c;集成開發環境&#xff09;&#xff0c;帶有一整套可以幫助用戶在使用Python語言開發時提高其效率的工具&#xff0c;比如調試、語法高亮、項目管理、代碼跳轉、智能提示、自動…

idea如何建立web項目???

我們需要用到tomcat&#xff0c;沒有下在著小伙伴&#xff0c;可以借鑒這篇博客&#xff1a; 如何正確下載tomcat&#xff1f;&#xff1f;&#xff1f;_明天更新的博客-CSDN博客 1.建立普通的Java項目。 2.簡單編寫index.jsp文件 3.添加tomcat 4.運行服務器 5.構建Servlet 最后…

嵌入式編譯FFmpeg6.0版本并且組合x264

下載直通車:我用的是6.0版本的 1.準備編譯: 2.進入ffmpeg源碼目錄&#xff0c;修改Makefile&#xff0c;添加編譯選項&#xff1a; CFLAGS -fPIC 不加會報錯 3.使用命令直接編譯 ./configure --cross-prefix/home/xxx/bin/arm-linux-gnueabihf- --enable-cross-compile --targ…

CodeSite for .NET Crack

CodeSite for .NET Crack CodeSite for.NET與Visual Studio集成&#xff0c;通過實時查看器日志記錄系統提供對代碼執行的更深入了解&#xff0c;該系統有助于在本地或遠程執行代碼時快速查找問題。超越傳統的斷點調試&#xff0c;在應用程序繼續運行時記錄應用程序的執行&…

vue使用jsplumb 流程圖

安裝jsPlumb庫&#xff1a;在Vue項目中使用npm或yarn安裝jsPlumb庫。 npm install jsplumb 創建一個Vue組件&#xff1a;創建一個Vue組件來容納jsPlumb的功能和呈現。 <template><div style"margin: 20px"><div style"margin: 20px">&l…

docker 安裝 elasticsearch、kibana 7.4.2

切換root 用戶 su root 拉起鏡像 docker pull elasticsearch:7.4.2 docker pull kibana:7.4.2 #1、創建Elasticsearch配置文件夾 mkdir -p /mydata/elasticsearch/config ? #2、創建Elasticsearch數據文件夾 mkdir -p /mydata/elasticsearch/data #3、創建Elasticsearch插件…

Python學習筆記_基礎篇(八)_正則表達式

1. 正則表達式基礎 1.1. 簡單介紹 正則表達式并不是Python的一部分。正則表達式是用于處理字符串的強大工具&#xff0c;擁有自己獨特的語法以及一個獨立的處理引擎&#xff0c;效率上可能不如str自帶的方法&#xff0c;但功能十分強大。得益于這一點&#xff0c;在提供了正則…

Spring系列篇 -- Bean的生命周期

目錄 經典面試題目&#xff1a; 一&#xff0c;Bean的生命周期圖 二&#xff0c;關于Bean的生命周期流程介紹&#xff1a; 三&#xff0c;Bean的單例與多例模式 總結&#xff1a; 前言&#xff1a;今天小編給大家帶來的是關于Spring系列篇中的Bean的生命周期講解。在了解B…