- 商品期貨量化交易實(shí)戰(zhàn):以Python為工具
- 胡凱博等編著
- 2457字
- 2022-04-29 16:52:00
2.3 Python中的變量和數(shù)據(jù)類(lèi)型
變量其實(shí)是內(nèi)存空間中的值,在創(chuàng)建變量時(shí),Python會(huì)自動(dòng)識(shí)別值的數(shù)據(jù)類(lèi)型,并且根據(jù)數(shù)據(jù)類(lèi)型將變量分配到指定的內(nèi)存空間中。Python中變量的數(shù)據(jù)類(lèi)型包括數(shù)字、字符串、列表、字典等。
2.3.1 變量
Python中的變量不需要聲明,但每個(gè)變量在使用之前必須賦值。在給變量賦值后,該變量才會(huì)被創(chuàng)建。使用“=”符號(hào)給變量賦值,“=”符號(hào)左邊為變量名稱,右邊為存儲(chǔ)于變量中的值,示例代碼如下:

輸出結(jié)果如下:

上述代碼分別定義了3個(gè)變量,將3.1415926535897、"圓周率"、2019分別賦給變量pi、name、year,最后使用Log()函數(shù)將這3個(gè)變量打印到日志中。
2.3.2 標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型
Python中的變量?jī)H僅只是一個(gè)名字(name),它關(guān)聯(lián)著內(nèi)存空間中的一個(gè)數(shù)據(jù)(object)。而變量的數(shù)據(jù)類(lèi)型實(shí)際上是該變量關(guān)聯(lián)在內(nèi)存空間中的數(shù)據(jù)(object)的數(shù)據(jù)類(lèi)型。Python 3有6種標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型,分別為Number(數(shù)值)、String(字符串)、List(列表)、Tuple(元組)、Set(集合)、Dictionary(字典)。在編寫(xiě)策略代碼時(shí),常用的數(shù)據(jù)類(lèi)型有Number(數(shù)值)、String(字符串)、List(列表)、Dictionary(字典)。下面重點(diǎn)講解這幾種數(shù)據(jù)類(lèi)型。
2.3.3 Number(數(shù)值)
Number數(shù)據(jù)類(lèi)型主要用于存儲(chǔ)數(shù)字,常用的Number數(shù)據(jù)類(lèi)型有int(整型)、float(浮點(diǎn)型)。int型數(shù)據(jù)就是不帶小數(shù)點(diǎn)的數(shù)字,正整數(shù)、負(fù)整數(shù)和0都是int型數(shù)據(jù)。Number是不可變數(shù)據(jù)類(lèi)型,Number變量的值一旦改變,就意味著需要重新分配內(nèi)存空間。
注意:Python中的布爾(bool)類(lèi)型只有兩個(gè)值,分別True與False(注意:首字母要大寫(xiě)),數(shù)字1和0可以分別用于表示True和False。
定義Number變量的示例代碼如下:

Python是動(dòng)態(tài)編程語(yǔ)言,通常需要判斷對(duì)象的數(shù)據(jù)類(lèi)型,可以使用內(nèi)置的type()函數(shù)查詢對(duì)象的數(shù)據(jù)類(lèi)型,示例代碼如下:

輸出結(jié)果如下:

在這個(gè)例子中,分別定義了一個(gè)int型(整型)變量和一個(gè)float型(浮點(diǎn)型)變量,Log()函數(shù)打印了type()函數(shù)返回的數(shù)據(jù)類(lèi)型。無(wú)論是int型變量,還是float型變量,都可以用于表示數(shù)字,可以進(jìn)行計(jì)算。
注意:在int型變量、float型變量混合計(jì)算時(shí),Python會(huì)先將int型變量轉(zhuǎn)換為float型變量。對(duì)于數(shù)字的除法,如果使用運(yùn)算符“/”,則返回一個(gè)浮點(diǎn)數(shù);如果使用運(yùn)算符“//”,則返回一個(gè)整數(shù)。
2.3.4 String(字符串)
字符串是若干個(gè)字符的集合,是表示文本的數(shù)據(jù)類(lèi)型,Python中的字符串用英文單引號(hào)''或英文雙引號(hào)""括起來(lái),可以使用反斜杠“\”轉(zhuǎn)義特殊字符。字符串的第1個(gè)索引值是0,第2個(gè)索引值是1,以此類(lèi)推。可以對(duì)字符串進(jìn)行連接、截取、復(fù)制等操作。可以通過(guò)方括號(hào)“[]”截取字符串中的字符。例如,[0]表示截取字符串中的第1個(gè)字符,[-1]表示截取字符串中的倒數(shù)第1個(gè)字符。如果要截取字符串中的連續(xù)幾個(gè)字符,則可以使用方括號(hào)加英文冒號(hào)。例如,[1:5]表示截取字符串中的第2~5個(gè)字符(索引值為1~4的字符),需要注意的是,不包括冒號(hào)右邊索引位上的字符(索引值為5的字符)。示例代碼如下:


輸出結(jié)果如下:

注意:Python中的字符串不能改變,也就是說(shuō),字符串在被創(chuàng)建后,就不能再改變了。示例代碼如下:

輸出結(jié)果如下:

在這個(gè)例子中,首先將字符串“hello world”賦給變量str,然后通過(guò)索引str[0]修改字符串變量str中第1個(gè)字符的值,結(jié)果引起報(bào)錯(cuò)。這印證了字符串一旦創(chuàng)建,就不能被修改。
2.3.5 List(列表)
列表就像是備忘清單,每個(gè)編號(hào)都記錄著一項(xiàng)清單詳情,它是有序數(shù)據(jù)的集合,通過(guò)編號(hào)可以引用列表中的數(shù)據(jù)。列表也是策略開(kāi)發(fā)中使用比較頻繁的數(shù)據(jù)類(lèi)型,商品期貨API接口返回的大部分?jǐn)?shù)據(jù)都是以列表形式呈現(xiàn)的。Python中的列表可以存儲(chǔ)不同類(lèi)型的元素,包括數(shù)字、字符串、列表、字典等。
列表使用方括號(hào)“[]”包含元素,相鄰兩個(gè)元素之間使用英文逗號(hào)“,”作為間隔符。和字符串類(lèi)似,列表也可以通過(guò)索引獲取其中的元素,并且使用索引截取列表中的一部分,列表在被截取后會(huì)返回一個(gè)新的列表,示例代碼如下:

輸出結(jié)果如下:

在列表中可以使用[頭下標(biāo):尾下標(biāo)]截取相應(yīng)的元素,頭下標(biāo)和尾下標(biāo)可以是正數(shù),也可以是負(fù)數(shù),如果頭下標(biāo)為空,則表示截取到頭部;如果尾下標(biāo)為空,則表示截取到尾部。和字符串不同的是,列表中的元素是可以改變的。可以對(duì)列表變量進(jìn)行索引、切片、增加、刪除、修改、查詢等基本操作。示例代碼如下:

輸出結(jié)果如下:

Python中有很多用于對(duì)列表進(jìn)行操作的函數(shù)。例如,使用len()函數(shù)可以獲取列表中有多少個(gè)元素,使用append()函數(shù)可以在列表尾部增加一個(gè)元素,使用pop()函數(shù)可以刪除列表中的一個(gè)元素,默認(rèn)刪除最后一個(gè)元素。示例代碼如下:

輸出結(jié)果如下:

在上述代碼中,首先定義了一個(gè)列表變量,然后在列表變量尾部添加了一個(gè)元素,再使用Log()函數(shù)將修改后的列表變量打印出來(lái),接著使用pop()函數(shù)刪除了列表變量中的最后一個(gè)元素,最后再次使用Log()函數(shù)將列表變量打印出來(lái)。
2.3.6 Dictionary(字典)
字典定義了鍵和值之間一對(duì)一的映射關(guān)系,主要用于存儲(chǔ)具有映射關(guān)系的數(shù)據(jù),它是一個(gè)無(wú)序、可變、有索引的集合。字典中的數(shù)據(jù)會(huì)用花括號(hào)“{}”括起來(lái),數(shù)據(jù)結(jié)構(gòu)如下:

可以看到,字典中的元素是一個(gè)鍵名對(duì)應(yīng)一個(gè)鍵值,如鍵名(keyName)"name"對(duì)應(yīng)鍵值(keyValue)"TOM"。和列表類(lèi)似,字典也可以嵌套。例如,在上述代碼中,字典變量dict1中的鍵名"address"對(duì)應(yīng)的鍵值就是一個(gè)字典。
輸出結(jié)果如下:

注意:因?yàn)樽值涫峭ㄟ^(guò)鍵名訪問(wèn)鍵值的,所以字典中的鍵名必須是唯一的,并且鍵名的數(shù)據(jù)類(lèi)型必須為不可變類(lèi)型。可以使用內(nèi)置的keys()函數(shù)輸出所有鍵名,使用內(nèi)置的values()函數(shù)輸出所有鍵值,示例代碼如下:


輸出結(jié)果如下:

在上述代碼中,首先定義了一個(gè)字典變量,然后使用Log()函數(shù)分別打印出該字典變量中的鍵名和鍵值(values)。需要注意的是,如果字典變量中的鍵值是一個(gè)子字典,那么該字典變量的values()函數(shù)會(huì)輸出整個(gè)字典變量中的值(包括子字典)。
2.3.7 數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)
Python提供了幾種數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù),用于將一種數(shù)據(jù)類(lèi)型的數(shù)據(jù)轉(zhuǎn)換為另一種數(shù)據(jù)類(lèi)型的數(shù)據(jù)。例如,將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù),將整數(shù)轉(zhuǎn)換為字符串,等等。
● 將x轉(zhuǎn)換為int類(lèi)型:ret=int(x)。
● 將x轉(zhuǎn)換為float類(lèi)型:ret=float(x)。
● 將x轉(zhuǎn)換為string類(lèi)型:ret=str(x)。
Phthon中數(shù)據(jù)類(lèi)型轉(zhuǎn)換的示例代碼如下:

輸出結(jié)果如下:

在上述代碼中,首先定義了一個(gè)浮點(diǎn)型變量,然后使用int()函數(shù)將該浮點(diǎn)型變量轉(zhuǎn)換為整型變量,接著定義了一個(gè)字符串變量,再使用float()函數(shù)將該字符串變量轉(zhuǎn)換為浮點(diǎn)型變量,最后使用str()函數(shù)將浮點(diǎn)型變量pi轉(zhuǎn)換為字符串變量并打印其數(shù)據(jù)類(lèi)型。
- 中美銀行的較量:中美銀行經(jīng)營(yíng)管理比較
- 數(shù)字金融革命:中國(guó)經(jīng)驗(yàn)及啟示
- 中國(guó)民間金融的規(guī)范化發(fā)展(2016)
- 手把手教你港股套利
- 比小說(shuō)更好看的理財(cái)故事書(shū):巴比倫富翁的秘密
- 金融創(chuàng)新、道德風(fēng)險(xiǎn)與法律責(zé)任:全球金融監(jiān)管體制變革的一個(gè)理論維度
- 黃金投資寶典
- 個(gè)人理財(cái)(中級(jí))過(guò)關(guān)必備(名師講義+歷年真題+考前預(yù)測(cè))
- 金融大模型開(kāi)發(fā)基礎(chǔ)與實(shí)踐
- 證券投資基金基礎(chǔ)知識(shí)
- 股票大作手操盤(pán)術(shù):融合時(shí)間和價(jià)格的利弗莫爾準(zhǔn)則
- 證券投資分析
- 金融市場(chǎng)學(xué)
- 做自己的天使投資人:耶魯芝大雙MBA傳授打造高端MBA人才的大智慧
- 我國(guó)國(guó)有商業(yè)銀行激勵(lì)與約束機(jī)制研究