發表文章

目前顯示的是 10月, 2015的文章

python 重載 overload

python不支持重載。習慣JAVA重載的寫作方式就要花點心思。每一種程式都有其思考的方式,也是該學習。不支持重載的python是如何思考的呢? 主要的問題還是在於python的參數型態不需要宣告。這是很方便的設計,但在重載上就會出問題。例如 def test(a, b):     print a*b def test(a, b):     xFile = open(b, 'r')     xFile.write(a)     xFile.close() 當程式出現這樣的寫法,後者的 test 會覆蓋前者。如果python支持重載,就必需要能進一步在編譯時判斷a是什麼,b是什麼。再決定使用那一個test。這也不是作不到,但以script語言來說,要付出一定的代價。語法也不再精簡。 兩個比較可行的方法 def test(a, b =1):     print a*b 這樣使用時,可選擇只給a,或 a 與 b同時給。 test(2) 印出 2 test(2,3) 印出 6 另一種方法就是用星號 def test(*a):     for i in a:         print i 這樣就不限制使用的參數數量 test(1,2,3,5) 印出 1 2 3 5 test(2,"good",5) 印出 2 good 5

python list remove

要移除python list 中的一個項目 a = [1,2,3,4,5,6] a.remove(2) 結果 a = [1, 3, 4, 5, 6] 想要移除所有項目 a=[1,2,3,4,5,6] a=[] #即可清空 或是 ( 小心會出錯,這是指標的問題 ) a = [1,2,3,4,5,6] for b in a:     a.remove(b) print a 結果 a = [2,4,6] 必需是 a = [1,2,3,3,4,5,6] for b in list(a):     a.remove(b) 結果 a=[]

清空 python list

清空python list,使用del與真接給定[]的分別 a = [1,2,3] b = a a=[] print a print b 得 a = [] b = [1,2,3] ###################################### a = [1,2,3] b = a del a[:] print a print b 得 a = [] b = []