0

我试图将函数的返回值存储在变量中。当按下 Raspberry Pi gpiozero 按钮时(通过引用)调用该函数。

from gpiozero import Button
from signal import pause

def fcn(a):
    print(a)
    b = a + 1
    print(b)
    return b

btn = Button(26)

i = 1
btn.when_activated = lambda: fcn(i) # returns 2

pause()

1按下按钮时,它将2按预期打印。

但是如何存储fcninto的返回值,i以便在每次按下按钮时递增?

编辑:我开始when_activated参考的原因是在我的主脚本中,我有多个按钮和多个功能,可以按任何顺序按下,并且应该将变量相互传递。像这样的东西:

def fcn(a):
    b = a + 1
    return b

def fcn2(b):
    c = b + 10
    return c

btn1 = Button(26)
btn2 = Button(19)

i = 1
btn1.when_activated = lambda: fcn1(i) # returns i + 1
btn2.when_activated = lambda: fcn2(i) # returns i + 10

实际上我也在传递datetime物体。

4

2 回答 2

0

只是一个修复。您可以在函数中使用 global 来分配给 i。请参阅下面的示例代码从 gpiozero import Button from signal import pause

def fcn():
    global i
    i = i + 1
    check()
    return b #No need of returning


def check():
    print i


btn = Button(26)

i = 1
btn.when_activated = lambda: fcn() # returns 2

pause()

global 告诉解释器该变量,在这种情况下,“i”与外部范围的变量有关。然后你可以使用该变量进行任何操作...函数 check() 只打印用于评估的值,因此您可以将其删除。

于 2019-04-14T10:36:03.193 回答
0

分配给每次按下按钮时i的值:fcn(i)

def fcn(a):
    print(a)
    b = a + 1
    print(b)
    return b

i = 1
while 1:
    input() # Button press
    i=fcn(i) # Incrementation
于 2019-04-14T10:21:07.890 回答