我如何找出可变参数的状态/内容/值

时间:2019-09-09 21:18:35

标签: python websocket try-catch

我通过网络套接字捕获数据。在这里变成了body,body里面的meta,meta里面的frame_port。但并非每个元都有一个frame_port。

当我这样做


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

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

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

如果执行以下操作,则在try / excpet块之前和之后都不会得到任何打印。所以这个try / excpet不起作用。任何想法如何检查meta中是否有frame_port以及是否未设置为0?


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

2 个答案:

答案 0 :(得分:3)

默认使用字典的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保持什么值,都不会引发任何异常

答案 1 :(得分:1)

get似乎对您要尝试的操作很方便:

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

如果没有键"frame_port",则frameport变量将设置为1。