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

时间:2016-02-21 21:06:51

标签: python function python-3.x raspberry-pi2

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

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中调用这些变量?

1 个答案:

答案 0 :(得分:0)

您将三个参数传递给此函数,大概是来自主程序。

使用元组解包,只返回一个元组:

name

在您的代码中,您只需返回一些组合,例如:

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 keypressed=True
        return key=x+1           # This statement will NOT execute

如果这是您的意图,那么确定,否则您应该在返回语句之前进行分配。您的代码的工作方式,特别是您的返回语句看起来似乎没有意义,而且我并没有真正解决这些问题。