1. 程式人生 > >python全棧_004_Python3基本資料型別

python全棧_004_Python3基本資料型別

1:什麼是可變資料型別和不可變資料型別:

  可變資料型別:value值改變,id值不變(即變數的記憶體地址不改變),即修改變數的值還在原來的記憶體中修改,不用重新建立一個物件,分配一塊記憶體;

  不可變資料型別:value值改變,id值也隨之改變(即變數的記憶體地址也改變),即原來記憶體中的值不能修改,修改變數的值,不會在原來的記憶體中修改,會重新建立一個物件,分配一塊記憶體;

  怎麼判斷是否可變???  是否可變,看能否在原來中的記憶體中修改,能修改就是可變資料型別,不能修改就是不可變資料型別。

       判斷方法:改變變數的值,看變數的記憶體地址值是否改變(使用id()函式檢視):
    a:如果變數的記憶體不變,那麼就是可變資料型別;(可以在原來的記憶體中修改)
    b:如果變數的記憶體改變,那麼就是不可變資料型別;(不能在原來中的記憶體中修改,意味著改變變數的值會重新建立物件,分配記憶體)

  

    如下圖:int型別是不可變資料型別;

    

2:常見的基本資料型別:

  1. int 整數
  2. bool 布林. 判斷. if while
  3. str 字串, 一般放小量的資料.
  4. list 列表. 可以存放大量的資料
  5. dict 字典, 以key:value的形式儲存資料
  6. set 集合(數學)
  7. tuple 元組 不可變

 

2.1:int型別:


整數: 常見操作就那麼幾個 +-*/ // % **
bit_length() 一個數的二進位制長度
(後面專門介紹)

 

2.2:bool型別:

  沒有操作
  型別轉換
  字串轉換成整數 int(str)

  結論1: 想要轉化成什麼型別就用這個型別括起來
  結論2: True => 1 False => 0
  結論3: 可以當做False來用的資料: 0 "" [] {} () None

 (其他的後面介紹)

3:型別轉換:

# 把字串轉換為int
print('1:把字串轉換為int')
a = '10'
print(a, type(a), id(a))
b = int(a)
print(b, type(b), id(b))

# 把int轉化成字串
print('2:把int轉化成字串')
a = 10
print(a, type(a), id(a))
b = str(a)
print(b, type(b), id(b)) # 如果想把字串轉化成int int(str) # 把int轉化成str str(int) # 結論: 想轉化成xxx資料型別 xxx(目標) # 把int轉換為bool print('3:把int轉換為bool') a = 10 print(a, type(a)) b = bool(a) print(b, type(b)) # 把bool轉換為str print('4:把bool轉換為str') c = True print(c, type(c)) d = str(c) print(d, type(d)) # 把bool轉換為int print('5:把bool轉換為int') a = False print(a, type(a)) b = int(a) print(b, type(b)) # 結論2: True => 1 False => 0 # 結論3 , 可以當做False來用的資料: 0, "", [], (),{}, None # 所有的空的東西都是False print('6:可以當做False來用的資料') print(0, "", [], (), {}, None) print(bool(0), bool(""), bool([]), bool(()), bool({}), bool(None)) print(id(0), id(""), id([]), id(()), id({}), id(None), id(False)) # 雖然都可以當做False,但是各個資料的記憶體地址是不一樣的 # 所以不能說 0 is False,0 is None,"" is None ,[] is None等;在判斷某個物件是否為空的時候需要注意!!! s = "" if s: print("娃哈哈") #不會輸出 if s is None: # 不能這麼判斷是否為空 print('s is None') else: print('s is not None') # 輸出此 lst = [] if lst is None: # 不能這麼判斷是否為空,is 比較的是其地址 print('lst is None') else: print('lst is not None') # 輸出此 if 0 is False: # 不能這麼判斷 print('0 is False') else: print('0 is not False') # 輸出此 if 0 == False: print('0 == False') # 輸出此,比較時會對False進行型別轉換,int(False) 結果為0 else: print('0 != False') s = '' if 0 == s: print('0 == s') else: print('0 != s') # 輸出此