在python效率的討論問題中字符串的連接效率有提過,多數建議使用join來代替"+"進行字符串連接
python中一切皆對象 字符串對象就是c api中得stringobject.c看python源碼的objects文件可以找到
1."+"。使用加號連接2個字符串會調用靜態函數string_concat(register PyStringObject *a ,register PyObject * b),在這個函數中會開辟一塊大小是a+b的內存的和的存儲單元,然后將a,b字符串拷貝進去,試想一下,如果是n個字符串相連? 那么會開辟n-1次內存,是比較耗費資源的
2.對于使用join函數 "".join([a,b])? 會調用string_join函數? 會計算列表的長度? 一次分配一塊內存然后拷貝,所以n個字符串相連 開辟內存的次數是1次
所以如果只有2個相連效率區別不大? 但是數據多了就會有問題
加點東西(筆記)? python與c語言在創建變量時候的不同
1。整數,python有小整數緩沖池? 有一個范圍? 當定義一個整數a=3.然后刪除這個整數使用b=3發現a,b的地址一樣的 再使用 c = 1000023執行上面的操作我們發現2個數的地址不一樣? 小整數緩沖池
2。python中定義一個字符串s = "hello",g = "hello"后 ,s,g的地址相同 ,c語言定義char a[5] = "hello",char b[5] = "hello" ,a和b的字符串地址不同 ,說明又申請了一塊內存,python使用的interned機制 首先查詢