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 找圖自動點擊

Python pyserial 抓取系統內的 COM PORT

VBA EXCEL 工作表變化 馬上執行 的作法 Worksheet_Change