簡體   English   中英

盡管多次調用函數,如何保持變量的值呢?

[英]How to keep the value of a variable despite function being called multiple times?

我有一個python函數,每次單擊Web界面上的按鈕時,該函數都會將伺服器向左或向右旋轉。 目前它正在這樣工作:

@cherrypy.expose
def turnCamera (self, **data):

    import pigpio
    import time

    servos=[4,7] #GPIO number
    pigpio.start()
    key = data['direction']
    if key=="left":
            servostatus = "left"
            print servostatus
            m=1500

    elif key=="right":
            servostatus = "right"
            print servostatus
            m=1000

    #to dispense pill
    if key=="dispense":
        m=900
        pigpio.set_servo_pulsewidth(servos[0], m) 
        servostat= "Position of servo: %s"%m
        print servostat
        time.sleep(1)
        m=1500
        pigpio.set_servo_pulsewidth(servos[0], m) 
        servostat= "Position of servo: %s"%m
        print servostat
        time.sleep(1)


    pigpio.stop()

    return servostat

數據是從jQuery發布的:

$('#left_button').click(function(){
                        $.post('/turnCamera', {direction:"left"}).done(function (reply) {
                            $('#camerapos').empty().append(reply);
                            alert("left button clicked");});

                    });
                    $('#right_button').click(function(){
                        $.post('/turnCamera', {direction:"right"}).done(function (reply) {
                            $('#camerapos').empty().append(reply);
                            alert("right button clicked");});
                    });

但是,我希望伺服器轉動,使每次單擊都可以使它轉動100。第一次運行腳本時,它將轉到初始位置m=1500 然后,用戶可以通過單擊左或右來控制攝像機的位置。 像這樣:

m=1500
while (m >= 500 and m <= 2500):
        if (key =="left"):
            m=m+100
        elif (key =="right"):
            m=m-100

但是我確實知道這是行不通的,因為每次觸發該功能(單擊按鈕)時,m都會重置為1500。 如何存儲m的值?

你可以做方法

return [servostat, m]

然后更改方法,使其具有一個參數,您可以在其中傳遞上一個調用中的m,例如def turnCamera(self, **data, m):

如下:

$('#left_button').click(function(){
                $.post('/turnCamera', {direction:"left",m_value:m}).done(function (reply) {
                    $('#camerapos').empty().append(reply);
                    alert("left button clicked");});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM