初始化函数变量一次&调用函数时更改变量值

时间:2018-04-27 16:37:19

标签: python function global-variables

语言:Python

我希望在执行开始时将变量的值初始化为零。该变量用于函数&它的值也可能在函数内改变。但是,每当进行函数调用时,我都不希望此变量的值重置为零。相反,它的值应该等于其先前函数调用的更新值。

示例:
get_current()在调用时会不断返回不同的值。 ctemp最初为零。 在第一个函数中,get_current_difference()将返回cdiff&然后更新ctemp的值ctemp = current。 在第二个函数调用中,ctemp的值不应为零。相反,它应该等于第一个函数调用的更新值。

import serial
arduino = serial.Serial('/dev/ttyACM1',9600)
ctemp = 0

def get_current():
    line = arduino.readline()
    string = line.replace('\r\n','')
    return string

def get_current_difference():
    global ctemp
    current = get_current()
    cdiff = float(current) - ctemp
    return cdiff
    ctemp = current

while 1:
    current = get_current_difference()
    print(current)

2 个答案:

答案 0 :(得分:1)

在设置ctemp

的值之前返回
return cdiff
ctemp = current

必须成为

ctemp = current
return cdiff

答案 1 :(得分:1)

您正在描述可变状态和修改它的函数,这是类的用途。

var flag = false;
(function setTweets() {

  $.ajax({
    type: "GET",
    url: "../tweets/get_latest_tweets",
    success: function(data) {
      //clear all children first
      $('#tweets-list').children().remove();
      for (var i = 0; i < data.length; i++) {
        $('<li>' + data[i].text + '<div class="card-footer bg-twitter"><div class="card-profile-image"><img src="' + data[i].pic + '" class="rounded-circle img-border box-shadow-1" alt="Card Image"></div>' +
          '<footer class="blockquote-footer bg-twitter white"><strong>@' + data[i].screen_name + '</strong></footer></div></li>').appendTo($('#tweets-list'))
      }

      if (!flag) {
        $('#tweet-slider').unslider('calculateSlides');
        flag = true;
      }


    },
    error: function(err) {
      console.log(err);
    }
  }).then(function() {
    setTimeout(setTweets, 8000); //Todo: Check how to do this async (dynamic adding of points)
  });
})();

例如,如果要使用多个温度监视器,则使用类缩放。