首页 > 解决方案 > 如何找出变量的状态/内容/值

问题描述

我通过 websocket 捕获数据。这里变成body,body里面的meta,meta里面的frame_port。但并不是每个元都有一个 frame_port。

当我做


frameport = response["body"]["meta"]["frame_port"]

如果有框架端口,我将成为框架端口

然后我尝试设置 frameport = 1 如果 meta 中没有 frame_port,但在这里我需要帮助。

如果我执行以下操作,我根本不会得到任何打印,而不是在 try/excpet 块之前和之后。所以这个 try/excpet 不起作用。知道如何检查 meta 内是否有 frame_port 以及是否未设置为 0?


try:
   frameport
except NameError:
   print("no frameport defined")
   frameport = 1
print("frameport is:" (frameport))

标签: pythonwebsockettry-catch

解决方案


使用字典的get默认值:

frameport = response["body"]["meta"].get("frame_port", 1)

请注意,这仅涵盖密钥不存在的情况。如果是这样,但包含您不想要的值,比如说None和 0,则该值需要单独处理:

frameport = response["body"]["meta"].get("frame_port", 1)
if frameport is None or frameport == 0:
    frameport = 1

就您的 try/catch 尝试而言,它不起作用,因为这一行:

frameport

无论价值如何,都不会抛出任何frameport异常


推荐阅读