python內(nèi)建類型與標準類型
前言
全可以訪問相同的對象, 因此我們講 這種變量名也叫對象的 "引用".
驗證1:
a = 2 b = 3 print(id(a),id(b)) ?#140734889681584 140734889681616 b = 2 print(id(b)) ? ?#140734889681584
驗證2:
b = 3 print(id(b)) ? ?#140734889681616 b +=1 print(id(b)) ? ?#140734889681648
相加其實是創(chuàng)建一個新的對象,然后把這個標簽b移到這個新的對象上
思考: 為什么Python的變量是這樣的? 和C/C++差異這么大捏?
- 空間考慮: 比如一個數(shù)字2, 在Python中只有這么一個數(shù)字2; 而一個C/C++程序中可能會有N個2.
- 時間考慮: 比如 a=b 這樣的賦值, 只是修改了一下貼標簽的位置, 不需要對對象進行深拷貝. 為什么Python可以這么做, 而C/C++不能這樣設計呢?
- C++中的賦值相當于深拷貝, a = 100 b = a ->內(nèi)存中存放了兩份100
- java和python相當于淺拷貝 a = 100 b = a ->a和b都是100的引用,內(nèi)存中只存放了一份100
Python的GC機制, 是這樣的設定的基礎.
理解對象和類型
關于不可變類型和可變類型
- python中的
int
,str
,float
,tuple
其實是不可變類型的變量 (即:沒辦法修改一個已經(jīng)存在的int類型的對象的值),只能創(chuàng)建新的,不能修改已經(jīng)有的
s = "hehe" s[0] = 'a'; #error 報錯 TypeError: 'str' object does not support item assignment s = 'a'+s[1:] #只能重新創(chuàng)建 print(s) ? ?#aehe #原來的hehe對象已經(jīng)銷毀,s貼在了aehe這個對象的身上
列表和字典都是可變對象:
- 有些對象是 "相似" 的, 于是我們把對象歸歸類. 比如把所有的整數(shù)歸為一類, 把所有的浮點數(shù)對象歸為一類,把所有的字符串歸為一類.
- 相同的類型的對象, 須有相同的操作. 比如, 所有的整數(shù)對象, 都可以進行加減乘除操作. 所有的字符串都可以使用切片操作.
關于動態(tài)靜態(tài)強弱類型
- Python是一種 動態(tài)強類型 編程語言.
- 動態(tài)是指運行時進行變量類型檢查; 強類型 指類型檢查嚴格, 并且"偏向于"不允許隱式轉(zhuǎn)換.
- 動態(tài)類型:一個變量在運行過程中類型發(fā)生變化
- 靜態(tài)類型:一個變量在運行過程中類型不能發(fā)生變化
- 強類型:越不支持隱式類型轉(zhuǎn)化,類型越強
- 弱類型:越支持隱式類型轉(zhuǎn)化,類型越弱
類似的, C語言是一種靜態(tài)弱類型語言. Java的類型檢查更為嚴格, 一般認為是靜態(tài)強類型, 而Javascript則是動態(tài)弱類型
如:
int a = 10; long b = 20; a = b ->C++可以 java不可
int a = 10; bool b = false; a = b ->C++可以,把false當成0 java不可
動態(tài)類型:小規(guī)模下更好,使用靈活
大規(guī)模常用靜態(tài)類型,否則多人協(xié)作容易有歧義
但是類型:越強越好
標準類型
- 整型
- 浮點型
注意:如果想要比較兩個浮點數(shù)是否相同,不能直接比較,因為會有精度損失,要做差比較
- 復數(shù)型
- 布爾型
- 字符串
- 列表
- 元組
- 字典
其它內(nèi)建類型
- 類型
- NULL對象(None)
- 文件
- 函數(shù)
- 模塊
- 類
類型的類型
前面我們說, 類型也是對象
print(type(type(100))) #<class 'type'> ? print(id(type(100))) #140734889206240
None ->空類型
Python有一個特殊的類型, 稱為NoneType. 這個類型只有一個對象, 叫做None
print(type(None)) #<class 'NoneType'>
- NoneType類似于C語言中的void
- None類似于C語言的空指針NULL(NULL的含義:特指0號地址的內(nèi)存)
- None這個對象沒啥有用的屬性, 它的布爾值為False
def func(): ? ?print("haha") ret = func() #打印haha 函數(shù)沒有返回值卻接收了,就是None print(ret) #打印None,
內(nèi)建類型的布爾值
所有的標準對象, 均可以用于布爾測試(放到if條件中).
下列對象的布爾值是False:
- None
- False
- 所有值為0的數(shù)字(0, 0.0, 0.0 + 0.0j (復數(shù)))
- "" (空字符串)
- [] (空列表)
- () (空元組)
- {} (空字典)
if "": ? ?print("True") else: ? ?print("False") #打印:False
其他情況下, 這些內(nèi)建對象的布爾值就是True.
到此這篇關于python內(nèi)建類型與標準類型的文章就介紹到這了,更多相關python內(nèi)建類型 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
kafka-python批量發(fā)送數(shù)據(jù)的實例
今天小編就為大家分享一篇kafka-python批量發(fā)送數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Pytorch搭建yolo3目標檢測平臺實現(xiàn)源碼
這篇文章主要為大家介紹了Pytorch搭建yolo3目標檢測平臺實現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05python paramiko利用sftp上傳目錄到遠程的實例
今天小編就為大家分享一篇python paramiko利用sftp上傳目錄到遠程的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01python3之模塊psutil系統(tǒng)性能信息使用
psutil是個跨平臺庫,能夠輕松實現(xiàn)獲取系統(tǒng)運行的進程和系統(tǒng)利用率,這篇文章主要介紹了python3之模塊psutil系統(tǒng)性能信息使用,感興趣的小伙伴們可以參考一下2018-05-05Python實現(xiàn)刪除列表首元素的多種方式總結(jié)
在Python中,處理列表的操作是日常開發(fā)中不可避免的任務之一,其中,刪除列表中的元素是一個常見的需求,本文為大家整理了Python中刪除列表中的第一個元素的多種方法,需要的可以參考下2023-12-12Python編程快速上手——Excel到CSV的轉(zhuǎn)換程序案例分析
這篇文章主要介紹了Python Excel到CSV的轉(zhuǎn)換程序,結(jié)合具體案例形式分析了Python操作Excel到CSV轉(zhuǎn)換的操作技巧與相關注意事項,需要的朋友可以參考下2020-02-02使用pymysql查詢數(shù)據(jù)庫,把結(jié)果保存為列表并獲取指定元素下標實例
這篇文章主要介紹了使用pymysql查詢數(shù)據(jù)庫,把結(jié)果保存為列表并獲取指定元素下標實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05