Google Code Block

2010年8月5日

[Python] 傳遞 class、function 及其 arguments

在 Python 的世界中,所有東西都是物件,所以函式也可以當作物件來傳遞,例如:
def func(func2):
     z = func2()
     print z
def func2():
    x = 1
    y = 2
    return x+y
執行 func() 可得 func2() 執行結果
但是函式也有可能接收不同的參數,
而要了解 Python 中 arguments 的傳遞方式,先參考這篇 What do *args, **kw, **kwargs Mean? 及 Python Doc 的 Keyword Arguments
函式的參數傳遞可用 *args, **kw 來表示,帶有一個星號(*)的變數可以接受 tuple,而兩個星號(**)的變數可以接收 dictionary,接收到的參數也可以被記錄下來,在需要的時候使用。
class Test():
def __init__(self, func, *args, **kwargs):
        self.__func = func
        self.__args = args
        self.__kwargs = kwargs
def execute(self):
        return self.__func(*self.__args, **self.__kwargs)
# 把 func 當作函式,func2 當作變數塞入 Test Class 中
t = Test(func, func2)
# 執行 func
t.execute()
得到的結果也是 3

沒有留言:

張貼留言