【发布时间】:2019-08-06 14:13:13
【问题描述】:
我对以下 Python 3 代码有疑问(从底部算起的第 5 行 count=count+1):
import base64
import json
from google.cloud import iot_v1
import os
from twilio.rest import Client
account_sid = os.environ['TWILIO_ACCOUNT_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)
count = 0
def device_config(config):
client = iot_v1.DeviceManagerClient()
name = client.device_path(<project_ID>,
<Region>, <Registry>, <Device_ID>)
binary_data = bytes(config, 'utf-8')
client.modify_cloud_to_device_config(name, binary_data)
def hello_pubsub(event, context):
if 'data' in event:
data = event['data']
data = base64.b64decode(data)
data = data.decode('utf-8')
data = json.loads(data)
temperature = float(data['temperature'])
if temperature > 25.0:
device_config("ledon")
if count < 1:
client.calls.create( \
url=<URL>,
to=os.environ['TWILIO_TO'],
from_=os.environ['TWILIO_FROM'])
count = count+1
else:
device_config("ledoff")
else:
print("Data is not present!")
这个函数会被连续调用(想象一下像一个无限循环会调用这个函数)。我想在第一次温度超过 25 时将计数更新为 1,对于以后的调用,它可能会达到多高,LED 应该亮,但不应进行调用
【问题讨论】:
-
需要在
hello_pubsub函数的第一行加上global count。
标签: python python-3.x