Python一些易錯的點

2021-09-25 05:26:48 字數 1633 閱讀 4571

1.int()、float()這些不是真正意義上的函式,而是建立物件的構造方法,也不是c++語言中的強制型別轉換。

2.python函式中的可變引數有兩種,一種是加*,一種是加上兩個*,前者是解包元祖,後者是解包字典。傳入的時候要注意使用*和**。

def a

(*arg)

:print

(arg)

if __name__ ==

"__main__"

: arg =

('a'

,'b')a

(arg)

如果傳入的時候實參沒有使用*,會將實參作為乙個引數傳入,得到結果((『a』, 『b』),)。

3.python中list的底層實現

list的儲存和記憶體分配

4.使用可變型別作為預設引數

解決這個問題,推薦再引數傳遞可變物件時,預設值設定為none,在函式內部對none進行判斷後再賦予預設值。

def test

(b=none)

: b = b or [

] b +=[1

]print

(b)test

() # [1]

test

() # [1]

test

() # [

1]

5.python中函式引數列表順序:位置引數、預設引數、元祖引數、字典引數

注意:在解包的時候元祖引數也會給前面的預設引數乙個值。所以,在傳值的時候,元祖的第乙個值傳給了預設引數。

6.python變數查詢順序(legb):區域性作用域、巢狀作用域、全域性作用域、內建作用域。可以使用global關鍵字來指示函式中的變數來自於全域性作用域,如果全域性作用域中沒有,那麼下面的**就會定義變數並將其置於全域性作用域。同理,如果我們希望函式內部的函式能夠修改巢狀作用域中的變數,可以使用nonlocal關鍵字來指示變數來自於巢狀作用域。

global 標誌實際上是為了提示 python 直譯器,表明被其修飾的變數是全域性變數。這樣直譯器就可以從當前空間 (current scope) 中讀寫相應變數了。每個 python 函式擁有對應的 __globals__ 字典,該字典與函式所屬模組的 __dict__ 字典完全相同。函式的全域性變數也會從這個字典中獲取。python 直譯器發現函式中的某個變數被 global 關鍵字修飾,就去函式的 __globals__ 字典變數中尋找(因為 python 中函式也是一等物件);同時,乙個模組中每個函式的 __globals__ 字典變數都是模組 __dict__ 字典變數的引用,二者值完全相同。

在乙個作用域裡面給乙個變數賦值的時候,python自動認為這個變數是這個作用域的本地變數,並遮蔽作用域外的同名的變數。

7.string是不可變物件,list是可變物件,對string不能執行del str[0]這樣的操作,也不能clear。

8.list和tuple效能對比

9.set中update和add的區別

10.+= 和 +,對於不可變物件,兩者相同,對於可變物件,+=執行的是in-place操作。

11.元祖中如果只有乙個元素,需要表示為(,)。記住最後面要加括號,不然會直接表示為元素。接收只有乙個元素的元祖時,要用input, = 元祖來接收。不然,接收得到的是元祖。

12.

1006 1015一些易錯點

1010 計算分數的浮點數值 時間限制 1000 ms 記憶體限制 65536 kb 提交數 27986 通過數 16833 題目描述 兩個整數a和b分別作為分子和分母,既分數a b,求它的浮點數值 雙精度浮點數,保留小數點後9位 輸入 輸入僅一行,包括兩個整數a和b。輸出 輸出也僅一行,分數 a ...

php一些易錯點

1.在函式外宣告的引數為global,在函式內呼叫時,需加上global x 100 function test 2.型別為弱型別,不用強制宣告其型別 3.常量使用define函式宣告,在使用時不需要加上 符號 define pi 3.1416926 echo pi 4.不僅比較值還有型別 5.fo...

php的一些易錯點

1.單引號與雙引號的區別 一般用單引號或雙引號標識乙個字串。單引號串與雙引號串,在php中的處理是不同的。雙引號中的內容可以被解釋並被替換,單引號串中的內容則被作為普通字元處理。例如 注 單引號中輸出的內容是 所見即所得 的,無論有無變數,都被當做普通字元原樣輸出。說明 在定義簡單的字串時,使用單引...