我正在尝试将函数的返回值存储在变量中。按下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
。
但是,如何将fcn
的返回值存储到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
物体。
每次按下按钮时,将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
只是一个修复。您可以在函数中使用global来分配给i。从信号导入暂停中看到gpiozero import下面的示例代码
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()只打印用于评估的值,因此您可以将其删除。