自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文帶你搞懂Python數(shù)據(jù)類(lèi)型之?dāng)?shù)字類(lèi)型

開(kāi)發(fā) 后端
本文詳細(xì)的講解了Python基礎(chǔ) ( 數(shù)字類(lèi)型 )。介紹了有關(guān)Python 支持三種不同的數(shù)字類(lèi)型。以及在實(shí)際操作中會(huì)遇到的問(wèn)題,提供了解決方案。

[[436071]]

Hey,大家好呀,我是Go進(jìn)階者。

一、數(shù)字類(lèi)型

數(shù)字類(lèi)型用于存儲(chǔ)數(shù)學(xué)意義上的數(shù)值。

數(shù)字類(lèi)型是不可變類(lèi)型。所謂的不可變類(lèi)型,指的是類(lèi)型的值一旦有不同了,那么它就是一個(gè)全新的對(duì)象。數(shù)字1和2分別代表兩個(gè)不同的對(duì)象,對(duì)變量重新賦值一個(gè)數(shù)字類(lèi)型,會(huì)新建一個(gè)數(shù)字對(duì)象。

Python的變量和數(shù)據(jù)類(lèi)型的關(guān)系。

變量只是對(duì)某個(gè)對(duì)象的引用或者說(shuō)代號(hào)、名字、調(diào)用等等,變量本身沒(méi)有數(shù)據(jù)類(lèi)型的概念。類(lèi)似1,[2, 3, 4],“haha”這一類(lèi)對(duì)象才具有數(shù)據(jù)類(lèi)型的概念。

例如:

  1. a = 1 # 創(chuàng)建數(shù)字對(duì)象1。 
  2.  
  3. a = 2 # 創(chuàng)建數(shù)字對(duì)象2,并將2賦值給變量a,a不再指向數(shù)字對(duì)象1 

這里,發(fā)生了變化的是變量a的指向,而不是數(shù)字對(duì)象1變成了數(shù)字對(duì)象2。初學(xué)者可能會(huì)比較迷糊,但不要緊,我們努力去明白它。

二、Python 支持三種不同的數(shù)字類(lèi)型(整數(shù)、浮點(diǎn)數(shù)和復(fù)數(shù))

1. 整數(shù)(Int)

通常被稱(chēng)為整型,是正或負(fù)整數(shù),不帶小數(shù)點(diǎn)。Python3的整型可以當(dāng)作Long類(lèi)型(更長(zhǎng)的整型)使用,所以 Python3沒(méi)有Python2的Long類(lèi)型。

例如:1,100,-8080,0,等等。

表示數(shù)字的時(shí)候,有時(shí)我們還會(huì)用八進(jìn)制或十六進(jìn)制來(lái)表示:

十六進(jìn)制用0x前綴和0-9,a-f表示,例如:0xff00,0xa5b4c3d2。

八進(jìn)制用0o前綴和0-7表示,例如0o12。

Python的整數(shù)長(zhǎng)度為32位,并且通常是連續(xù)分配內(nèi)存空間的。

什么是空間地址?

空間地址(address space)表示任何一個(gè)計(jì)算機(jī)實(shí)體所占用的內(nèi)存大小。比如外設(shè)、文件、服務(wù)器或者一個(gè)網(wǎng)絡(luò)計(jì)算機(jī)。地址空間包括物理空間以及虛擬空間。

例 :

  1. print(id(-2)) 
  2.  
  3. print(id(-1)) 
  4.  
  5. print(id(0)) 
  6.  
  7. print(id(1)) 
  8.  
  9. print(id(2) 

從上面的空間地址看,地址之間正好差32。為什么會(huì)這樣?

因?yàn)镻ython在初始化環(huán)境的時(shí)候就在內(nèi)存里自動(dòng)劃分了一塊空間,專(zhuān)門(mén)用于整數(shù)對(duì)象的存取。當(dāng)然,這塊空間也不是無(wú)限大小的,能保存的整數(shù)是有限的,所以你會(huì)看到id(0)和id(10000)之間的地址差別很大。

  1. >>> id(0) 
  2. 1456976928 
  3. >>> id(10000) 
  4. 45818192 

小整數(shù)對(duì)象池:

Python初始化的時(shí)候會(huì)自動(dòng)建立一個(gè)小整數(shù)對(duì)象池,方便我們調(diào)用,避免后期重復(fù)生成!

這是一個(gè)包含262個(gè)指向整數(shù)對(duì)象的指針數(shù)組,范圍是-5到256。也就是說(shuō)比如整數(shù)10,即使我們?cè)诔绦蚶餂](méi)有創(chuàng)建它,其實(shí)在Python后臺(tái)已經(jīng)悄悄為我們創(chuàng)建了。

驗(yàn)證一下小整數(shù)對(duì)象池的存在

在程序運(yùn)行時(shí),包括Python后臺(tái)自己的運(yùn)行環(huán)境中,會(huì)頻繁使用這一范圍內(nèi)的整數(shù),如果每需要一個(gè),你就創(chuàng)建一個(gè),那么無(wú)疑會(huì)增加很多開(kāi)銷(xiāo)。創(chuàng)建一個(gè)一直存在,永不銷(xiāo)毀,隨用隨拿的小整數(shù)對(duì)象池,無(wú)疑是個(gè)比較實(shí)惠的做法。

  1. print(id(-6)) 
  2.  
  3. print(id(-5)) 
  4.  
  5. print(id(-4)) 
  6.  
  7. print(id(255)) 
  8.  
  9. print(id(256)) 
  10.  
  11. print(id(257)) 

從id(-6)和id(257)的地址,我們能看出小整數(shù)對(duì)象池的范圍,正好是-5到256。

除了小整數(shù)對(duì)象池,Python還有整數(shù)緩沖區(qū)的概念,也就是剛被刪除的整數(shù),不會(huì)被真正立刻刪除回收,而是在后臺(tái)緩沖一段時(shí)間,等待下一次的可能調(diào)用。

  1. >>> a = 1000000 
  2. >>> id(a) 
  3. 45818160 
  4. >>> del a       # 刪除變量a 
  5. >>> b = 1000000 
  6. >>> id(b) 
  7. 45818160 

給變量a賦值了整數(shù)1000000,看了一下它的內(nèi)存地址。然后我把a(bǔ)刪了,又創(chuàng)建個(gè)新變量b,依然賦值為1000000,再次看下b的內(nèi)存地址,和以前a存在的是一樣的。

del是Python的刪除關(guān)鍵字,可以刪除變量、函數(shù)、類(lèi)等等。

這一段內(nèi)容,可能感覺(jué)沒(méi)什么大用,但它對(duì)于理解Python的運(yùn)行機(jī)制有很大幫助。

2. 浮點(diǎn)數(shù)(float)

浮點(diǎn)數(shù)也就是小數(shù),如1.23,3.14,-9.01,等等。但是對(duì)于很大或很小的浮點(diǎn)數(shù),一般用科學(xué)計(jì)數(shù)法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以寫(xiě)成1.2e-5,等等。

3. 復(fù)數(shù)( (complex))

復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,可以用a + bj,或者complex(a,b)表示,復(fù)數(shù)的實(shí)部a和虛部b都是浮點(diǎn)型。關(guān)于復(fù)數(shù),不做科學(xué)計(jì)算或其它特殊需要,通常很難遇到。

數(shù)字類(lèi)型轉(zhuǎn)換:

有時(shí)候,我們需要對(duì)數(shù)字的類(lèi)型進(jìn)行轉(zhuǎn)換。Python為我們提供了方便的內(nèi)置的數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)。

int(x):將x轉(zhuǎn)換為一個(gè)整數(shù)。如果x是個(gè)浮點(diǎn)數(shù),則截取小數(shù)部分。

float(x) :將x轉(zhuǎn)換到一個(gè)浮點(diǎn)數(shù)。

complex(x) :將x轉(zhuǎn)換到一個(gè)復(fù)數(shù),實(shí)數(shù)部分為 x,虛數(shù)部分為 0。

complex(x, y):將 x 和 y 轉(zhuǎn)換到一個(gè)復(fù)數(shù),實(shí)數(shù)部分為 x,虛數(shù)部分為 y。

轉(zhuǎn)換過(guò)程中如果出現(xiàn)無(wú)法轉(zhuǎn)換的對(duì)象,則會(huì)拋出異常,比如int("haha"),你說(shuō)我把字符串“haha”轉(zhuǎn)換為哪個(gè)整數(shù)才對(duì)?

  1. a = 10.53 
  2. b = 23 
  3. print(int(a)) 
  4.  
  5. print(float(a)) 
  6.  
  7. print(complex(a)) 
  8.  
  9. print(complex(a, b)) 

三、math庫(kù)(數(shù)學(xué)計(jì)算)

科學(xué)計(jì)算需要導(dǎo)入math這個(gè)庫(kù),它包含了絕大多數(shù)我們可能需要的科學(xué)計(jì)算函數(shù),一般常用的函數(shù)主要包括abs()、exp()、fabs()、max()、min()等,這里就不再贅述了,感興趣的小伙伴可以自行百度下。

下面是兩個(gè)常用數(shù)學(xué)常量:

下面是一些應(yīng)用展示,注意最后的角度調(diào)用方式:

  1. import math 
  2. print(math.log(2)) 
  3.  
  4. print(math.cos(30)) 
  5.  
  6. print(math.cos(60)) 
  7. print(math.sin(30)) 
  8.  
  9. print(math.sin(math.degrees(30))) 
  10.  
  11. print(math.sin(math.radians(30)))  

四、總結(jié)

本文詳細(xì)的講解了Python基礎(chǔ) ( 數(shù)字類(lèi)型 )。介紹了有關(guān)Python 支持三種不同的數(shù)字類(lèi)型。以及在實(shí)際操作中會(huì)遇到的問(wèn)題,提供了解決方案。

用豐富的案例幫助大家更好理解,使用Python編程語(yǔ)言,方便大家更好理解,希望對(duì)大家的學(xué)習(xí)有幫助。

 

責(zé)任編輯:姜華 來(lái)源: Go語(yǔ)言進(jìn)階學(xué)習(xí)
相關(guān)推薦

2021-11-20 10:27:43

Python數(shù)據(jù)類(lèi)型

2023-03-06 21:29:41

mmap技術(shù)操作系統(tǒng)

2021-09-11 10:41:27

PythonPickle模塊

2010-06-13 18:00:56

MySQL數(shù)據(jù)類(lèi)型

2023-02-23 19:21:51

NumPyPython數(shù)組

2023-11-23 13:39:17

2021-11-06 10:18:30

Python變量常量

2021-12-01 11:40:14

Python 輸入輸出

2021-07-21 09:24:25

MongoDB數(shù)據(jù)庫(kù) Python

2024-11-19 13:20:55

2021-09-07 09:46:40

JavaScriptGenerator函數(shù)

2021-06-09 09:00:11

Python數(shù)據(jù)類(lèi)型基礎(chǔ)

2021-06-05 10:02:15

Python進(jìn)制數(shù)據(jù)類(lèi)型

2024-05-10 13:46:36

Python進(jìn)制

2023-09-08 09:38:59

2021-08-05 06:54:05

觀(guān)察者訂閱設(shè)計(jì)

2021-10-14 10:25:05

JavaScript類(lèi)型函數(shù)

2022-03-24 08:51:48

Redis互聯(lián)網(wǎng)NoSQL

2021-04-05 08:22:54

Python進(jìn)制數(shù)據(jù)類(lèi)型

2024-04-12 12:19:08

語(yǔ)言模型AI
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)