欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python內(nèi)建類型與標準類型

 更新時間:2022年08月18日 10:40:26   作者:芒果在努力???????  
這篇文章主要介紹了python內(nèi)建類型與標準類型,文章圍繞主題展開詳細的內(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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論