首頁  >  文章  >  後端開發  >  一文帶你去懂Python資料類型之數字類型

一文帶你去懂Python資料類型之數字類型

Go语言进阶学习
Go语言进阶学习轉載
2023-07-25 14:02:331669瀏覽

一、數字型別

數字型別用來儲存數學意義上的數值。

數字型別是不可變型別。所謂的不可變類型,指的是類型的值一旦有不同了,那麼它就是一個全新的物件。數字1和2分別代表兩個不同的對象,對變數重新賦值一個數字類型,會新建一個數字對象。


Python的變數和資料類型的關係。

變數只是對某個物件的引用或說代號、名字、呼叫等等,變數本身沒有資料型別的概念。類似1,[2, 3, 4],「haha」這一類物件才具有資料類型的概念。

例如:

a = 1 # 创建数字对象1。


a = 2 # 创建数字对象2,并将2赋值给变量a,a不再指向数字对象1

這裡,發生了變化的是變數a的指向,而不是數字物件1變成了數字對象2。初學者可能會比較迷糊,但不要緊,我們努力去明白它。

#


二、Python 支援三種不同的數字型別(整數、浮點數和複數)

1. 整數(Int)

通常稱為整數,是正或負整數,不帶小數點。 Python3的整型可以當作Long型別(較長的整型)使用,所以 Python3沒有Python2的Long型別。

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

表示數字的時候,有時我們還會用八進位或十六進位來表示:

十六進位用0x前綴和0-9,a-f表示,例如:0xff00,0xa5b4c3d2。

八進位用0o前綴和0-7表示,例如0o12。

Python的整數長度為32位,並且通常是連續分配記憶體空間的。

什么是空间地址?

空间地址(address space)表示任何一个计算机实体所占用的内存大小。比如外设、文件、服务器或者一个网络计算机。地址空间包括物理空间以及虚拟空间。

例 :

print(id(-2))


print(id(-1))


print(id(0))


print(id(1))


print(id(2))

一文帶你去懂Python資料類型之數字類型

从上面的空间地址看,地址之间正好差32。为什么会这样?

因为Python在初始化环境的时候就在内存里自动划分了一块空间,专门用于整数对象的存取。当然,这块空间也不是无限大小的,能保存的整数是有限的,所以你会看到id(0)和id(10000)之间的地址差别很大。

>>> id(0)
1456976928
>>> id(10000)
45818192

一文帶你去懂Python資料類型之數字類型

小整数对象池:

Python初始化的时候会自动建立一个小整数对象池,方便我们调用,避免后期重复生成!

这是一个包含262个指向整数对象的指针数组,范围是-5到256。也就是说比如整数10,即使我们在程序里没有创建它,其实在Python后台已经悄悄为我们创建了。

验证一下小整数对象池的存在

在程序运行时,包括Python后台自己的运行环境中,会频繁使用这一范围内的整数,如果每需要一个,你就创建一个,那么无疑会增加很多开销。创建一个一直存在,永不销毁,随用随拿的小整数对象池,无疑是个比较实惠的做法。

print(id(-6))
print(id(-5))
print(id(-4))
print(id(255))
print(id(256))
print(id(257))

一文帶你去懂Python資料類型之數字類型

从id(-6)和id(257)的地址,我们能看出小整数对象池的范围,正好是-5到256。

除了小整数对象池,Python还有整数缓冲区的概念,也就是刚被删除的整数,不会被真正立刻删除回收,而是在后台缓冲一段时间,等待下一次的可能调用。

>>> a = 1000000>>> id(a)45818160>>> del a       # 删除变量a>>> b = 1000000>>> id(b)45818160

给变量a赋值了整数1000000,看了一下它的内存地址。然后我把a删了,又创建个新变量b,依然赋值为1000000,再次看下b的内存地址,和以前a存在的是一样的。

del是Python的删除关键字,可以删除变量、函数、类等等。

这一段内容,可能感觉没什么大用,但它对于理解Python的运行机制有很大帮助。

2. 浮點數(float)

浮點數也就是小數,如1.23,3.14,-9.01,等等。但對於很大或很小的浮點數,一般用科學計數法表示,把10用e替換,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。

3. 複數( (complex))

#複數由實數部分和虛數部分構成,可以用a bj,或complex(a ,b)表示,複數的實部a和虛部b都是浮點型。關於複數,不做科學計算或其它特殊需要,通常很難遇到。

數字型別轉換:

#有時候,我們需要轉換數字的型別。 Python為我們提供了方便的內建的資料型別轉換函數。

int(x):將x轉換為一個整數。如果x是個浮點數,則截取小數部分。

float(x) :將x轉換到一個浮點數。

complex(x) :將x轉換為複數,實數部分為 x,虛數部分為 0。

complex(x, y):将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。

转换过程中如果出现无法转换的对象,则会抛出异常,比如int("haha"),你说我把字符串“haha”转换为哪个整数才对?

a = 10.53b = 23print(int(a))
print(float(a))
print(complex(a))
print(complex(a, b))

一文帶你去懂Python資料類型之數字類型


三、math库(数学计算)

科学计算需要导入math这个库,它包含了绝大多数我们可能需要的科学计算函数,一般常用的函数主要包括abs()、exp()、fabs()、max()、min()等,这里就不再赘述了,感兴趣的小伙伴可以自行百度下。

下面是两个常用数学常量:

##pie
常數 說明
#數學常數pi(圓周率,一般以π來表示)
#############數學常數e,e即自然常數(自然常數)。 ##################

下面是一些应用展示,注意最后的角度调用方式:

import mathprint(math.log(2))
print(math.cos(30))
print(math.cos(60))print(math.sin(30))
print(math.sin(math.degrees(30)))
print(math.sin(math.radians(30)))
<br/>

一文帶你去懂Python資料類型之數字類型

四、总结

    本文详细的讲解了Python基础 ( 数字类型 )。介绍了有关Python 支持三种不同的数字类型。以及在实际操作中会遇到的问题,提供了解决方案。

以上是一文帶你去懂Python資料類型之數字類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:Go语言进阶学习。如有侵權,請聯絡admin@php.cn刪除