數字型別用來儲存數學意義上的數值。
數字型別是不可變型別。所謂的不可變類型,指的是類型的值一旦有不同了,那麼它就是一個全新的物件。數字1和2分別代表兩個不同的對象,對變數重新賦值一個數字類型,會新建一個數字對象。
變數只是對某個物件的引用或說代號、名字、呼叫等等,變數本身沒有資料型別的概念。類似1,[2, 3, 4],「haha」這一類物件才具有資料類型的概念。
例如:
a = 1 # 创建数字对象1。 a = 2 # 创建数字对象2,并将2赋值给变量a,a不再指向数字对象1
這裡,發生了變化的是變數a的指向,而不是數字物件1變成了數字對象2。初學者可能會比較迷糊,但不要緊,我們努力去明白它。 <br/>
#<br/>
通常稱為整數,是正或負整數,不帶小數點。 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))
从上面的空间地址看,地址之间正好差32。为什么会这样?
因为Python在初始化环境的时候就在内存里自动划分了一块空间,专门用于整数对象的存取。当然,这块空间也不是无限大小的,能保存的整数是有限的,所以你会看到id(0)和id(10000)之间的地址差别很大。
>>> id(0) 1456976928 >>> id(10000) 45818192
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))
<br/>
从id(-6)和id(257)的地址,我们能看出小整数对象池的范围,正好是-5到256。<br/>
除了小整数对象池,Python还有整数缓冲区的概念,也就是刚被删除的整数,不会被真正立刻删除回收,而是在后台缓冲一段时间,等待下一次的可能调用。
>>> a = 1000000>>> id(a)45818160>>> del a # 删除变量a>>> b = 1000000>>> id(b)45818160
给变量a赋值了整数1000000,看了一下它的内存地址。然后我把a删了,又创建个新变量b,依然赋值为1000000,再次看下b的内存地址,和以前a存在的是一样的。<br/>
del
是Python的删除关键字,可以删除变量、函数、类等等。
这一段内容,可能感觉没什么大用,但它对于理解Python的运行机制有很大帮助。
浮點數也就是小數,如1.23,3.14,-9.01,等等。但對於很大或很小的浮點數,一般用科學計數法表示,把10用e替換,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。
#複數由實數部分和虛數部分構成,可以用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))
<br/>
科学计算需要导入math
这个库,它包含了绝大多数我们可能需要的科学计算函数,一般常用的函数主要包括abs()、exp()、fabs()、max()、min()等,这里就不再赘述了,感兴趣的小伙伴可以自行百度下。
下面是两个常用数学常量:
常數 | 說明 |
---|---|
#數學常數pi(圓周率,一般以π來表示) |
下面是一些应用展示,注意最后的角度调用方式:
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資料類型之數字類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!