#Python 2.5#這個可以用修飾器來完成#但是一般不會限制引數型別#給你個思路:def argfilter(*types): def deco(func): #這是修飾器 def newfunc(*args): #新的函式 if len(types)==len(args): correct = True for i in range(len(args)): if not isinstance(args[i], types[i]): #判斷型別 correct = False if correct: return func(*args) #返回原函式值 else: raise TypeError else: raise TypeError return newfunc #由修飾器返回新的函式 return deco #返回作為修飾器的函式@argfilter(int, str) #指定引數型別def func(i, s): #定義被修飾的函式 print i, s#之後你想限制類型的話, 就這樣:#@argfilter(第一個引數的類名, 第二個引數的類名, ..., 第N個引數的類名)#def yourfunc(第一個引數, 第一個引數, ..., 第N個引數):# ...##相當於:#def yourfunc(第一個引數, 第一個引數, ..., 第N個引數):# ...#yourfunc = argfilter(第一個引數的類名, 第二個引數的類名, ..., 第N個引數的類名)(yourfunc)
#Python 2.5#這個可以用修飾器來完成#但是一般不會限制引數型別#給你個思路:def argfilter(*types): def deco(func): #這是修飾器 def newfunc(*args): #新的函式 if len(types)==len(args): correct = True for i in range(len(args)): if not isinstance(args[i], types[i]): #判斷型別 correct = False if correct: return func(*args) #返回原函式值 else: raise TypeError else: raise TypeError return newfunc #由修飾器返回新的函式 return deco #返回作為修飾器的函式@argfilter(int, str) #指定引數型別def func(i, s): #定義被修飾的函式 print i, s#之後你想限制類型的話, 就這樣:#@argfilter(第一個引數的類名, 第二個引數的類名, ..., 第N個引數的類名)#def yourfunc(第一個引數, 第一個引數, ..., 第N個引數):# ...##相當於:#def yourfunc(第一個引數, 第一個引數, ..., 第N個引數):# ...#yourfunc = argfilter(第一個引數的類名, 第二個引數的類名, ..., 第N個引數的類名)(yourfunc)