回覆列表
  • 1 # 我是阿嘛

    #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)

  • 中秋節和大豐收的關聯?
  • 不讓別人查詢手機通話記錄怎麼刪除?