python整數對象,Python整數類型

本文目錄一覽:

寫出python中6種數據類型?

Python中的變數不需要聲明。每個變數在使用前都必須賦值,變數賦值以後該變數才會被創建。

Python3中有六個標準的數據類型:Number(數字)+String(字元串)+List(列表)+Tuple(元組)+Sets(集合)+Dictionary(字典)。

Number(數字)數字類型是顧名思義是用來存儲數值的,需要記住的是,有點和Java的字元串味道差不多,如果改變了數字數據類型的值,將重新分配內存空間。

可以使用del語句刪除一些數字對象的引用delvar1[,var2[,var3[….,varN]]]]。Python支持三種不同的數值類型:

1.整型(Int)-通常被稱為是整型或整數,是正或負整數,不帶小數點。

Python3整型是沒有限制大小的,可以當作Long類型使用,所以Python3沒有Python2的Long類型。

2.浮點型(float)-浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2=2.5×102=250)

3.復((complex))-複數由實數部分和虛數部分構成,可以用a+bj,或complex(a,b)表示,複數的實部a和虛部b都是浮點型。數字類型轉換1.int(x)將x轉換為一個整數。

4.complex(x,y)將x和y轉換到一個複數,實數部分為x,虛數部分為y。x和y是數字表達式。

Python3 & 基本數據類型(一)

Python提供的基本數據類型:數值(整型、浮點型、複數、布爾型等)、字元串、列表、元組、字典、集合等,將它們簡單分類如下:

通常被稱為整型,數值為正或者負,不帶小數點。

Python 3的整型可以當做Long類型使用,所以Python 3沒有

Python 2的Long類型。

Python 初始化的時候會自動建立一個小整數對象池,方便我們調用,避免後期重複生成!這是一個包含 262個指向整數對象的指針數組,範圍是 -5 到 256 。

Python的浮點數就是數學中的小數,類似C語言中的double。

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

複數 由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示,複數的實部a和虛部b都是浮點。

對 與 錯 、 0 和 1 、 正 與 反 ,都是傳統意義上的布爾類型。

但在Python語言中,布爾類型只有兩個值, True 與 False 。請注意,是英文單詞的對與錯,並且首字母要大寫。

在Python中,0、0.0、-0.0、None、空字元串「」、空元組()、空列表[]、空字典{}都被當作False,還有自定義類型,如果實現了 nonzero ()或 len ()方法且方法返回0或False,則其實例也被當作False,其他對象均為True

布爾值還可以用and、or和not運算。

1)、and 運算是 與 運算,只有所有都為 True , and 運算的結果才是 True ;

2)、or 運算是 或 運算,只要其中有一個為 True , or 運算結果就是 True ;

3)、not 運算是 非 運算,它是單目運算符,把 True 變成 False,False 變成 True。

例如:

由以上案例可以看出,在做四則運算的時候,明顯把 True 看做 1 , False 看做 0 。

4)空值

空值不是布爾類型,只不過和布爾關係比較緊密。

空值是Python里一個特殊的值,用 None 表示(首字母大寫)。None不能理解為0,因為0是整數類型,而None是一個特殊的值。None也不是布爾類型,而是NoneType。

在某些特定的情況下,需要對數字的類型進行轉換。

Python提供了內置的數據類型轉換函數:

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

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

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

complex(x, y): 將 x 和 y 轉換到一個複數,實數部分為 x,虛數部分為 y。

Python字元串即可以用單引號也可以用雙引號括起來,甚至還可以用三引號括起來,字元串是以”或””括起來的任意文本。

例如:’abc’,”xyz”等等。請注意,”或””本身只是一種表示方式,不是字元串的一部分,因此,字元串’abc’只有a,b,c這3個字元。如果’本身也是一個字元,那就可以用””括起來,比如”I’m OK”包含的字元是I,’,m,空格,O,K這6個字元。

字元串中包括特殊字元,可以用轉義字元\來標識

但是字元串裡面如果有很多字元都需要轉義,就需要加很多\,為了簡化,Python還允許用r”表示”內部的字元串默認不轉義

例如:

print r’\\\t\\’ #輸出:\\\t\\

字元串的一些常見操作

切⽚是指對操作的對象截取其中⼀部分的操作

語法:序列[開始位置下標:結束位置下標:步⻓]

a. 不包含結束位置下標對應的數據, 正負整數均可;

b. 步⻓是選取間隔,正負整數均可,默認步⻓為1。

find():檢測某個⼦串是否包含在這個字元串中,如果在返回這個⼦串開始的位置下標,否則則返回-1。

index():檢測某個⼦串是否包含在這個字元串中,如果在返回這個⼦串開始的位置下標,否則則報異常。

rfind(): 和find()功能相同,但查找⽅向為右側開始。

rindex():和index()功能相同,但查找⽅向為右側開始。

count():返回某個⼦串在字元串中出現的次數。

replace():替換

split():按照指定字元分割字元串。

join():⽤⼀個字元或⼦串合併字元串,即是將多個字元串合併為⼀個新的字元串。

capitalize():將字元串第⼀個字元轉換成⼤寫。

title():將字元串每個單詞⾸字⺟轉換成⼤寫。

lower():將字元串中⼤寫轉⼩寫。

upper():將字元串中⼩寫轉⼤寫。

lstrip():刪除字元串左側空⽩字元。

rstrip():刪除字元串右側空⽩字元。

strip():刪除字元串兩側空⽩字元。

ljust():返回⼀個原字元串左對⻬,並使⽤指定字元(默認空格)填充⾄對應⻓度 的新字元串。

rjust():返回⼀個原字元串右對⻬,並使⽤指定字元(默認空格)填充⾄對應⻓度 的新字元串,語法和

ljust()相同。

center():返回⼀個原字元串居中對⻬,並使⽤指定字元(默認空格)填充⾄對應⻓度 的新字元串,語

法和ljust()相同。

所謂判斷即是判斷真假,返回的結果是布爾型數據類型:True 或 False。

startswith():檢查字元串是否是以指定⼦串開頭,是則返回 True,否則返回 False。如果設置開

始和結束位置下標,則在指定範圍內檢查。

endswith()::檢查字元串是否是以指定⼦串結尾,是則返回 True,否則返回 False。如果設置開

始和結束位置下標,則在指定範圍內檢查。

isalpha():如果字元串⾄少有⼀個字元並且所有字元都是字⺟則返回 True, 否則返回 False。

isdigit():如果字元串只包含數字則返回 True 否則返回 False。

isalnum():如果字元串⾄少有⼀個字元並且所有字元都是字⺟或數字則返 回 True,否則返回

False。

怎麼用python表示正整數?

python整數的表示方法:

1、可以使用字元串str的isdigit方法判斷字元串是否是一個僅有數字組成,也就是整數。如果是整數退出while循環,否則繼續請求輸入。

2、也可以使用try-except語句。如果輸入的字元串是整數,那麼它可以用用int()函數,轉換為int類並退出循環,否則會出現ValueError,可以使用try-except語句捕獲ValueError,然後繼續請求輸入。

基本信息

Python由荷蘭數學和計算機科學研究學會的Guido van Rossum於1990年代初設計,作為一門叫做ABC語言的替代品。Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。

Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。

Python解釋器易於擴展,可以使用C或C++(或者其他可以通過C調用的語言)擴展新的功能和數據類型。Python也可用於可定製化軟體中的擴展程序語言。Python豐富的標準庫,提供了適用於各個主要系統平台的源碼或機器碼。

Python對象

眾所周知,Python是一門面向對象的語言,在Python無論是數值、字元串、函數亦或是類型、類,都是對象。

對象是在 堆 上分配的結構,我們定義的所有變數、函數等,都存儲於堆內存,而變數名、函數名則是一個存儲於 棧 中、指向堆中具體結構的引用。

要想深入學習Python,首先需要知道Python對象的定義。

我們通常說的Python都是指CPython,底層由C語言實現,源碼地址: cpython [GitHub]

Python對象的定義位於 Include/object.h ,是一個名為 PyObject 的結構體:

Python中的所有對象都繼承自PyObejct,PyObject包含一個用於垃圾回收的雙向鏈表,一個引用計數變數 ob_refcnt 和 一個類型對象指針 ob_type

從PyObejct的注釋中,我們可以看到這樣一句:每個指向 可變大小Python對象 的指針也可以轉換為 PyVarObject* (可變大小的Python對象會在下文中解釋)。 PyVarObejct 就是在PyObject的基礎上多了一個 ob_size 欄位,用於存儲元素個數:

在PyObject結構中,還有一個類型對象指針 ob_type ,用於表示Python對象是什麼類型,定義Python對象類型的是一個 PyTypeObject 介面體

實際定義是位於 Include/cpython/object.h 的 _typeobject :

在這個類型對象中,不僅包含了對象的類型,還包含了如分配內存大小、對象標準操作等信息,主要分為:

以Python中的 int類型 為例,int類型對象的定義如下:

從PyObject的定義中我們知道,每個對象的 ob_type 都要指向一個具體的類型對象,比如一個數值型對象 100 ,它的ob_type會指向 int類型對象PyLong_Type 。

PyTypeObject結構體第一行是一個PyObject_VAR_HEAD宏,查看宏定義可知PyTypeObject是一個變長對象

也就是說,歸根結底 類型對象也是一個對象 ,也有ob_type屬性,那 PyLong_Type 的 ob_type 是什麼呢?

回到PyLong_Type的定義,第一行 PyVarObject_HEAD_INIT(PyType_Type, 0) ,查看對應的宏定義

由以上關係可以知道, PyVarObject_HEAD_INIT(PyType_Type, 0) = { { _PyObject_EXTRA_INIT 1, PyType_Type } 0} ,將其代入 PyObject_VAR_HEAD ,得到一個變長對象:

這樣看就很明確了,PyLong_Type的類型就是PyType_Typ,同理可知, Python類型對象的類型就是PyType_Type ,而 PyType_Type對象的類型是它本身

從上述內容中,我們知道了對象和對象類型的定義,那麼根據定義,對象可以有以下兩種分類

Python對象定義有 PyObject 和 PyVarObject ,因此,根據對象大小是否可變的區別,Python對象可以劃分為 可變對象(變長對象) 和 不可變對象(定長對象)

原本的對象a大小並沒有改變,只是s引用的對象改變了。這裡的對象a、對象b就是定長對象

可以看到,變數l仍然指向對象a,只是對象a的內容發生了改變,數據量變大了。這裡的對象a就是變長對象

由於存在以上特性,所以使用這兩種對象還會帶來一種區別:

聲明 s2 = s ,修改s的值: s = ‘new string’ ,s2的值不會一起改變,因為只是s指向了一個新的對象,s2指向的舊對象的值並沒有發生改變

聲明 l2 = l ,修改l的值: l.append(6) ,此時l2的值會一起改變,因為l和l2指向的是同一個對象,而該對象的內容被l修改了

此外,對於 字元串 對象,Python還有一套內存復用機制,如果兩個字元串變數值相同,那它們將共用同一個對象:

對於 數值型 對象,Python會默認創建0~2 8 以內的整數對象,也就是 0 ~ 256 之間的數值對象是共用的:

按照Python數據類型,對象可分為以下幾類:

Python創建對象有兩種方式,泛型API和和類型相關的API

這類API通常以 PyObject_xxx 的形式命名,可以應用在任意Python對象上,如:

使用 PyObjecg_New 創建一個數值型對象:

這類API通常只能作用於一種類型的對象上,如:

使用 PyLong_FromLong 創建一個數值型對象:

在我們使用Python聲明變數的時候,並不需要為變數指派類型,在給變數賦值的時候,可以賦值任意類型數據,如:

從Python對象的定義我們已經可以知曉造成這個特點的原因了,Python創建對象時,會分配內存進行初始化,然後Python內部通過 PyObject* 變數來維護這個對象,所以在Python內部各函數直接傳遞的都是一種泛型指針 PyObject* ,這個指針所指向的對象類型是不固定的,只能通過所指對象的 ob_type 屬性動態進行判斷,而Python正是通過 ob_type 實現了多態機制

Python在管理維護對象時,通過引用計數來判斷內存中的對象是否需要被銷毀,Python中所有事物都是對象,所有對象都有引用計數 ob_refcnt 。

當一個對象的引用計數減少到0之後,Python將會釋放該對象所佔用的內存和系統資源。

但這並不意味著最終一定會釋放內存空間,因為頻繁申請釋放內存會大大降低Python的執行效率,因此Python中採用了內存對象池的技術,是的對象釋放的空間會還給內存池,而不是直接釋放,後續需要申請空間時,優先從內存對象池中獲取。

原創文章,作者:WNY1U,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/128225.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WNY1U的頭像WNY1U
上一篇 2024-10-03 23:24
下一篇 2024-10-03 23:24

相關推薦

  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • int類型變數的細節與注意事項

    本文將從 int 類型變數的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變數進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變數。 一、定義與聲明 int…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論