1. 程式人生 > >day 2 基本類型和函數

day 2 基本類型和函數

索引 如果 重復 是不是 特定 enc cti 復用 增加

列表,元組,字典的轉換。 list列表是一組可變的元素集合 列表是‘[]‘括號組成的,[]括號包含所有元素,列表的創建可以傳遞字符串,也可以傳遞多個字符串來創建列表。如"asd", / "a","b" ... tuple元組的創建和列表一致,區別在於 元組是以‘()‘創建的,並且元組數據不可變。 dict字典不同於列表和元組,他是一種鍵值對關系,即key-value,key是唯一的。 字典的作用就是儲存一些需要關鍵字來索引數據的數據結構。 bytes類型轉換 如果我們創建一個字符串,並且想把它轉換成字節,那麽需要用到bytes類型,如: s = "asd" bytes(s,encoding="utf-8") 需要指定字符串的自身的編碼。否則會出錯 dict的formkeys函數可以將列表創建字典的同時,在參數2設置一個共同的值。共享同一塊內存,但如果分別賦值不同的值。則改變為分別指向不同的內存。 set -- 集合 set 集合是類似列表,但是不同的是set內不存在重復元素,這是set的天性就是去重。集合內的數據都是唯一的。 set的元素沒有固定的順序,隨時變化。 set的函數 s.clear() 清除set元素 s.remove(x) 移除集合內的一個值,如果不存在報錯。 s.add(x) 增加一個值 s.pop() 將集合內的自後一個pop並返回。 s.intersection(x) j交集 ,求s和x的交集,就是參數1 有的,同時參數2也有的。a & b s.issubset(x) 判斷x是不是s的子集,就是判斷x的元素是否全部都在s中存在,並且s的元素比x多。 s.issuperset(x) 判斷s是不是x的父序列 s.symmetric_difference(x) 交叉集- 把s存在的,x不存在的,x存在的。s不存在的一並返回 set.difference(形參1) 差集。求集合和參數1的差集,就是集合有的,參數沒有的。,函數會返回差集的數據 = a - b s.differents_update(x) 求差集的同時將差集數據更新到s s.union(x) 並集。 == s | b 三目運算-》三元 res = value1 if 條件 else value2 ,如果為真res= value1,否則res = value2 深淺拷貝 對於str,int 的拷貝賦值,地址都是一樣的。 對於淺拷貝,僅僅拷貝最外面一層。(不包括數據層,數據層是不拷貝的。因為內存優化機制問題,只要指向的數值一致。那麽內存地址都是指向同一個地址) 對於深拷貝,也是不涉及數據層的。深拷貝只是將數據層以外的所有層都拷貝一份。 函數 函數是提高代碼復用性的一個數據結構,因為在面向過程裏代碼往往是復制黏貼,很多代碼都是重合的。 所以函數應用而生,為代碼的重復利用而設計。 函數就是把實現特定功能的代碼寫到一個數據結構內,這個數據結構稱為函數。 當需要時只需調用即可。 函數已可以傳遞參數進去,參數有多樣: 1 位置參數,位置參數默認在前面。因為 其他參數都有其他功能。 2 默認參數,可以設置一些默認不需要賦值的參數。 3 可變參數,可變參數是用於接收數目不定的參數,因為有時候可以需要接收不確定數量的參數所以可變參數就派上用場了。 *argv 4 關鍵字參數,關鍵字參數類似於可變參數,也是可以接收數量不定的參數,不過卻別在於關鍵字參數只接收key=value 這樣的形式參數,不是這樣形式的參數都是可變參數接收。 對於將一個list對象當做形參傳遞給函數時,參數傳遞時 可以直接傳遞變量,也可以變量前 帶一個*號, 對於直接傳遞 ,函數內部*argv 是一個包含一個list對象的tuple 對於帶*號傳遞,函數內部*argv是一個包含n個元素的tuple 全局變量 & 局部變量 1 全局變量可以在全局範圍內使用,但是在局部內不可更改,除非使用golbal關鍵字聲明全局變量。但是這樣是不推薦的做法,行業內嚴禁。 2 局部變量是在函數內定義的或者循環結構內定義的變量,只要循環或函數結束就會刪除局部變量。 全局變量推薦大寫。 參數一共有幾類: 1 普通參數 -> func("a"/variable) 2 指定參數 -> func(p="xxx") 3 默認參數 一般放到最後, def fnc(a,b,c,d=4,e=5) 4 可變參數/動態參數 可以接收數量不定的變量集合, def func(*args) func(1,2,3,4,5) 5 動態關鍵字參數,可以接收指定參數的形式參數,但是又沒有相對應的形參。

day 2 基本類型和函數