2016-04-26 58 views
0

我想聲明一個python變量存儲函數與所需的參數,但是當我運行它時,它運行最後聲明的變量。我試圖將它存儲在一個變量中,當我編寫變量名稱時,它會運行帶有相關參數的函數。它的目的是在程序中調用處理運行:聲明存儲函數,但不運行它的python變量

size(1000,500) 
background(255,255,255) 
cred = fill(255,0,0) 
corange = fill(255,127,0) 
cyellow = fill(255,255,0) 
cgreen = fill(0,255,0) 
cblue = fill(0,0,255) 
cpurple = fill(143,0,255) 

mcolors = [cred,corange,cyellow, cgreen, cblue, cpurple] 
y=0 

def palette(): 
    global y 
    global mcolors 
    for i in mcolors: 
     i 
     rect(0,y,20,20) 
     y+=22 
palette() ` 
+0

我不太關注。這裏唯一的功能是'palette',它不接受任何參數。 –

+0

我想沒有一個選民可以閱讀,因爲我理解這個問題很好。就像參考一樣,類似Processing的庫中的fill()會設置一個全局填充顏色,所以當函數被調用時它很重要。它不會返回任何東西。 –

+0

我認爲你已經有了這種行爲 - 只是分配給全局變量,然後運行「調色板」功能。 – chrisd1100

回答

1

一種方法是在lambda函數來包裝來電:

cred = lambda: fill(255, 0, 0) 

要調用它,你仍然需要(),即:

i() 

不過,我覺得在這種情況下,它可能會更好,只是存儲的顏色值而不是實際的函數引用,即:

cred = (255, 0, 0) 

這創建了一個元組的值(類似於不可變列表的類型)。它與函數調用括號不同。再後來,你可以在你的循環通過這些給一個函數:

fill(*i) 

星運營商將使其使用值從數組作爲單獨的參數,而不是一個參數。

+0

是的,我使用了填充(* i)。非常感謝。 –