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