python學習過程中的注意點

2021-09-25 04:01:18 字數 1538 閱讀 1280

input返回為str型資料,需要進行資料轉化

python中縮排可以在文字編輯器中直接用tab,tab和空格混用會報錯

list對應,tuple對應(),dictionary對應{}。對於list,tuple和dictionary的索引用的都是

python中字元和整型都是不可變的物件,呼叫不可變物件自身的任意方法,也不會改變該物件自身的內容。相反,這些方法會建立新的物件並返回,這樣,就保證了不可變物件本身永遠是不可變的。dic和set輸入都是不可變物件,但是list可以作為set輸入。

函式返回值:

但其實這只是一種假象,python函式返回的仍然是單一值:

原來返回值是乙個tuple!但是,在語法上,返回乙個tuple可以省略括號,而多個變數可以同時接收乙個tuple,按位置賦給對應的值,所以,python的函式返回多值其實就是返回乙個tuple,但寫起來更方便。

函式呼叫中的預設引數: 預設引數很有用,但使用不當,也會掉坑里。預設引數有個最大的坑,演示如下:

先定義乙個函式,傳入乙個list,新增乙個end再返回:

當你正常呼叫時,結果似乎不錯:

當你使用預設引數呼叫時,一開始結果也是對的:

但是,再次呼叫add_end()時,結果就不對了:

很多初學者很疑惑,預設引數是,但是函式似乎每次都「記住了」上次新增了'end'後的list。

原因解釋如下:

python函式在定義的時候,預設引數l的值就被計算出來了,即,因為預設引數l也是乙個變數,它指向物件,每次呼叫該函式,如果改變了l的內容,則下次呼叫時,預設引數的內容就變了,不再是函式定義時的了。

定義預設引數要牢記一點:預設引數必須指向不變物件!

要修改上面的例子,我們可以用none這個不變物件來實現:

現在,無論呼叫多少次,都不會有問題:

為什麼要設計str、none這樣的不變物件呢?因為不變物件一旦建立,物件內部的資料就不能修改,這樣就減少了由於修改資料導致的錯誤。此外,由於物件不變,多工環境下同時讀取物件不需要加鎖,同時讀一點問題都沒有。我們在編寫程式時,如果可以設計乙個不變物件,那就盡量設計成不變物件。

Python學習過程中的問題

args 和 kwargs args代表位置引數,它會接收任意多個引數並把這些引數作為元組傳遞給函式。kwargs代表的關鍵字引數,允許你使用沒有事先定義的引數名,另外,位置引數一定要放在關鍵字引數的前面。new 和 init 的區別 建立乙個新例項時呼叫 new 初始化乙個例項時用 init 這是...

注意儲存過程中的空值

如果乙個字串的組成中有乙個空值,那麼這個字串就為空,如 declare sql varchar 500 num int set sql 加油 set sql sql cast num as varchar 50 print sql 這樣的話什麼都輸出不出來,改為 declare sql varcha...

在資料採集上雲過程中需要注意的點

波特率 協調器 38400 感測器 38400 執行器 9600 在同時接入邊緣閘道器及串列埠伺服器的情況下,在邊緣閘道器配置程式中,新增聯結器應選擇 串列埠伺服器接入 此外串列埠伺服器ip就是本地區域網內串列埠伺服器配置ip,而串列埠伺服器端口從6001 6004 rs232 要看資料接入到哪個串...