我正在尝试将函数的返回值存储在变量中。按下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
个对象。
答案 0 :(得分: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
答案 1 :(得分:0)
只需修复即可。您可以在函数中使用global来分配给i。请参阅下面的示例代码 从gpiozero导入按钮 从信号导入暂停起
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()函数仅会打印要评估的值,因此可以将其删除。