python中global关键字的作用

python中global关键字的作用 python中初始化一个变量y_axis_RA=[] 一个函数中给y_axis_RA赋值,但是该变量显示未使用,在另外一个函数中使用y_axis_RA提示变量为空 在Python中,变量作用域的问题可能会导致你遇到的情况。如果你在函数外部初始化了一个变量 y_axis_RA=[],然后在函数内部对其进行赋值,你需要确保在函数外部正确地引用了该变量。以下是几个可能的原因和解决方案: 原因1:赋值未正确传播到全局变量 如果你在函数内部给 y_axis_RA 赋值,但没有使用 global 关键字,那么赋值只会影响函数内部的局部变量,而不会影响外部的全局变量。 y_axis_RA = [] def assign_values(): y_axis_RA = [1, 2, 3] # 这里的赋值只影响局部变量 assign_values() print(y_axis_RA) # 输出 [],因为全局变量未被修改 y_axis_RA = [] def assign_values(): global y_axis_RA # 告诉Python我们想要修改全局变量 y_axis_RA = [1, 2, 3] assign_values() print(y_axis_RA) # 输出 [1, 2, 3] 可分析MQTT连接的执行顺序 def on_connect(client, userdata, flags, rc): print("1") print("Connected with result code "+str(rc)) client.subscribe(MQTT_TOPIC) def on_message(client, userdata, msg): global first_recv_marge_buff print("2") try: first_recv_marge_buff.extend(msg.payload) if len(first_recv_marge_buff) > MAX_FILE_SIZE: flag, first_recv_marge_buff = first_data_parse_loop(first_recv_marge_buff) # print(f"flag: {flag}") except Exception as e: print(f"Error processing the message payload: {e}") # MQTT客户端初始化 client = mqtt.Client(MQTT_CLIENT_ID) # client = mqtt.Client() client.username_pw_set(MQTT_USER, MQTT_PASSWORD) client.on_connect = on_connect client.on_message = on_message # 更新画布 def update_canvas(canvas, ax, fig): try: data_array = data_queue.get_nowait() # 清除旧的图形 ax.clear() pcm = ax.pcolormesh(y_axis_RA[:, 20:-20], x_axis_RA[:, 20:-20], data_array[:, 20:-20], cmap='jet', shading='flat') # 创建pcolormesh对象 canvas.draw() except queue.Empty: pass # MQTT数据接收线程 def mqtt_data_receiver(): client.connect(MQTT_BROKER, MQTT_PORT, 60) print("3") client.loop_forever() "H:\Program Files\Python\Python311\python.exe" F:\9mqtt\mqtt_python_test\test_new\new9.py 3 1 Connected with result code 0 2 2 2 2 1_frame_idx: 387 2 2 2 2 1_frame_idx: 388 2 2 2 1_frame_idx: 389 2 2 2 2 2 2 1_frame_idx: 390 2 2 2 2 2 1_frame_idx: 391 2 2 2 2 2 2 2 2 2 2 2 1_frame_idx: 393 2 2 2 2 2 1_frame_idx: 394 2 2 2 2 1_frame_idx: 395 2 2 2 1_frame_idx: 396 2 2 进程已结束,退出代码为 0 Error processing the message payload: unpack requires a buffer of 65536 bytes

posted on 2024-10-14 14:17  夏天师妹  阅读(4)  评论(0编辑  收藏  举报

导航