Python常見陷阱

2022-08-30 00:09:33 字數 1274 閱讀 9664

#

-*- coding: utf-8 -*-

#python需要常見陷阱

print u'

---------------#1. 預設值引數 default parameter values---------------'#

1. 預設值引數 default parameter values

#1.1 預設值引數的引入

#預設值引數的作用:還可以使用預設引數、可變引數和關鍵字引數,使得函式定義出來的介面,不但能處理複雜的引數,還可以簡化呼叫者的**。

#計算x的平方

defpower(x):

return x *x

#再定義乙個計算n次方的函式時,上面的函式就失效了

defpower(x, n):

s = 1

while n >0:

n -= 1s *=x

returns#

print power(2) 報錯,因為後面又定義了power(x, n)

print power(2, 10)

#使用預設函式可以解決這個問題

def power(x, n=2):

s = 1

while n >0:

n -= 1s *=x

return

sprint power(2)

print power(2, 10)

print u'

-----------1.2 預設引數值陷阱————預設值引數必須指向不變物件------------'#

1.2 預設引數值陷阱————預設值引數必須指向不變物件

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

def addend(list=):

'end')

return

list

print addend([1, 2, 3])

#但是引數使用預設值時就會出問題,函式每次都「記住了」上次新增了'end'後的list。

print

addend(), addend()

#解決辦法:使用不變物件none

def add_end(list=none):

if list is

none:

list =

'end')

return

list

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

print add_end(), add_end()

**參見:github

C 常見陷阱

注 char型別在標準中是個特別的存在,它沒有被規定為有符號或無符號。比如int指的是有符號,而char不一樣。在程式設計時最好給char寫上符號,否則同樣的表示式可能在不同的編譯器 平台會有不同的結果。請觀察乙個程式輸出 int main 輸出 fffffff1,fffffff2,f0f2 fff...

常見的程式設計陷阱

原資料來自 1.public class privateoverride public static void main string args class derivedclass extends privateoverride 輸出結果為 private f 分析 private方法被自動認為是...

Go開發常見陷阱

go作為一種簡便靈巧的語言,深受開發者的喜愛。但對於初學者來說,要想輕鬆駕馭它,還得做好細節學習工作。初學者應該注意的地方 大括號不能獨立成行。未使用變數錯誤 對於全域性變數和函式引數變數,是可以定義後不使用的。但是對於函式內部變數來說,如果進行定義後不進行使用,編譯器會提示錯誤。匯入包未呼叫錯誤 ...