2016-04-26 56 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)。非常感谢。 –