如何在 main 中调用这些变量?

How can I call these variables in main?

我有这段代码运行并将 GPIOS 7,11,13,15 设置为我的 Raspberry Pi 2 HIGHLOW 因此我可以相应地寻址 16 多路复用器通道,然后读取通过 MCP3002 SPI 和 returns 的模拟电压(如果有按键或释放的键,加上是哪个键)。这是代码:

def findpress(keypressed, keyreleased, key):
    x=0
    while True:
        binary_x="{0:04b}".format(x)
        GPIO.output(7, binary_x[0])
        GPIO.output(11, binary_x[1])
        GPIO.output(13, binary_x[2])
        GPIO.output(15, Binary_x[3])
        channeldata_1 = read_mcp3002(0) # get CH0 input
        channeldata_2 = read_mcp3002(0) # get CH0 input
        channeldata_3 = read_mcp3002(0) # get CH0 input
        channeldata = (channeldata_1+channeldata_2+channeldata_3)/3
        #
        # Voltage = (CHX data * (V-ref [= 3300 mV] * 2 [= 1:2 input divider]) / 1024 [= 10bit resolution]
        #
        voltage = int(round(((channeldata * vref * 2) / resolution),0))+ calibration
        if DEBUG : print("Data (bin)    {0:010b}".format(channeldata))
        if x==15 :      # some problem with this sensor so i had to go and twicked the thresshold
            voltage = voltage - 500
        if voltage<=2500 and keyreleased==True:
            return keypressed=True
            return key=x+1
        if voltage<=2500 and keyreleased==False
            return keypressed=True
            return key=x+1
        if voltage>2500 and keypressed==True:
            x=x+1
            return keyreleased==True
        if x == 15:
            x=0

如何在 main 中调用这些变量?

您正在向此函数传递三个参数,大概是来自主程序。

使用元组解包,只是return一个元组:

print(foo(1, 2, 3)) # should print: 2, 4, 0

# unpacking the tuple like so:
x, y, z = foo(1,2,3)
print x, y, z

def foo(x, y, z):
    x +=1
    y +=2
    z = 0

在您的代码中,您可以简单地return一些组合,例如:

return keypressed, keyreleased, key

请注意,像这样的多个 return 语句不会按预期执行,而不是按顺序 return 对两个值执行,它只会在第一个 return 之后停止:

        return keypressed=True
        return key=x+1           # This statement will NOT execute

另请注意,您当前正在实施的这种表示法将进行评估,return 一个真实值:

return keypressed=False # returns True if keypressed==False else False

如果这是您的意图,那么可以,但否则您应该在 return 语句之前进行 分配 。您的代码的工作原理,特别是您的 return 语句看起来没有意义,我不会真正解决这些问题。