Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 赋值前引用的第10行的封闭范围中定义的局部变量“count”_Python_Python 3.x - Fatal编程技术网

Python 赋值前引用的第10行的封闭范围中定义的局部变量“count”

Python 赋值前引用的第10行的封闭范围中定义的局部变量“count”,python,python-3.x,Python,Python 3.x,我对Python3的以下代码有一个问题,该代码位于底部count=count+1的第5位: 导入base64 导入json 从google.cloud导入物联网v1 导入操作系统 从twilio.rest导入客户端 account_sid=os.environ['TWILIO_account_sid'] auth_token=os.environ['TWILIO_auth_token'] 客户端=客户端帐户\u sid,身份验证\u令牌 计数=0 def设备配置: 客户端=物联网v1.Devic

我对Python3的以下代码有一个问题,该代码位于底部count=count+1的第5位:

导入base64 导入json 从google.cloud导入物联网v1 导入操作系统 从twilio.rest导入客户端 account_sid=os.environ['TWILIO_account_sid'] auth_token=os.environ['TWILIO_auth_token'] 客户端=客户端帐户\u sid,身份验证\u令牌 计数=0 def设备配置: 客户端=物联网v1.DeviceManager客户端 名称=client.device\u路径, , , 二进制数据=字节配置,“utf-8” client.modify_cloud_to_device_configname,二进制数据 def hello_pubsubevent,上下文: 如果事件中有“数据”: 数据=事件['data'] 数据=base64.b64解码数据 数据=数据。解码“utf-8” data=json.loadsdata 温度=浮动数据[“温度”] 如果温度>25.0: 设备\u配置在 如果计数小于1: client.calls.create\ url=, to=os.environ['TWILIO_to'], from=os.environ['TWILIO\u from'] 计数=计数+1 其他: 设备配置关闭 其他: 打印数据不存在! 这个函数将被不断调用,就像无限循环调用这个函数一样。当第一次温度超过25时,我想将count更新为1,对于以后的调用,它可能会达到多高,LED应该亮起,但不应该进行调用

您在函数内部引用count,而它是在函数外部定义的。您应该将count作为参数传递。

在hello\u pubsubevent中,在count=count+1行中指定给count的上下文。这使得python在未定义计数的函数范围内查找计数,因此在右侧[count+1]的查找失败

这可能是一个令人担忧的解读:

您需要告诉python您指的是全局计数:

可能会是:

def hello_pubsub(count, event, context):
    ...
然后使用以下命令调用它:

hello_pubsub(count, event, context)

您应该将count作为参数传递到函数中,并在调用函数的循环中递增它。如果您确实需要在函数中为其赋值,则可以在赋值之前使用语句“全局计数”。

您正在尝试将局部变量调用到另一个函数中。您还需要将变量传递到函数中。希望这有帮助

account_sid = os.environ['TWILIO_ACCOUNT_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)
global count = 0



def hello_pubsub(event, context,count):

如果他们把它变成一个全局变量,它会起作用吗对不起,但是为什么全局变量这么糟糕呢?你需要在hello_pubsub函数的第一行添加全局计数。我不鼓励使用globals@JammyDodger我一般也不会。但这可以解释错误并解决问题。
account_sid = os.environ['TWILIO_ACCOUNT_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)
global count = 0



def hello_pubsub(event, context,count):