我通過 websocket 捕獲數(shù)據(jù)。這里變成body,body里面的meta,meta里面的frame_port。但并不是每個元都有一個 frame_port。當(dāng)我做frameport = response["body"]["meta"]["frame_port"]如果有框架端口,我將成為框架端口然后我嘗試設(shè)置 frameport = 1 如果 meta 中沒有 frame_port,但在這里我需要幫助。如果我執(zhí)行以下操作,我根本不會得到任何打印,而不是在 try/excpet 塊之前和之后。所以這個 try/excpet 不起作用。知道如何檢查 meta 內(nèi)是否有 frame_port 以及是否未設(shè)置為 0?try: frameportexcept NameError: print("no frameport defined") frameport = 1print("frameport is:" (frameport))
2 回答

慕標(biāo)5832272
TA貢獻1966條經(jīng)驗 獲得超4個贊
使用字典的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異常

ibeautiful
TA貢獻1993條經(jīng)驗 獲得超6個贊
get
似乎它對你想要做的事情很方便:
frameport = response["body"]["meta"].get("frame_port", 1)
如果沒有鍵"frame_port"
,則frameport
變量將設(shè)置為 1。
添加回答
舉報
0/150
提交
取消