亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何簡化“現代”python 中的驗證檢查?

如何簡化“現代”python 中的驗證檢查?

收到一只叮咚 2021-11-16 14:51:39
我正在重構一個“大”python 類,并且我正在嘗試減少重復以使代碼更短且更具可讀性。if 'name' not in item:    error = "no name key found in definition"    return False, error, {}if 'type' not in item:    error = "no type key found in definition"    return False, error, {}if 'of' not in item:    error = "no of key found in definition"    return False, error, {}基本上,我已將我的 json 輸入轉換為字典,并且我正在查看是否存在相同的特定元素。如果輸入中未出現鍵,則該函數返回 False、信息消息和空字典。我可以創建一個接受參數名稱并評估存在的類方法,但是我想知道在 python 3.x 中是否有更好的方法來做到這一點
查看完整描述

3 回答

?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

您可以使用循環和字符串插值將其減少為:


for key in ('name', 'type', 'of'):

    if key not in item:

        error = "no {} key found in definition".format(key)

        return False, error, {}


查看完整回答
反對 回復 2021-11-16
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

好吧,這段代碼可以重構以避免像這樣重復:


for part in ['name', 'type', 'of']:

    if part not in item:

        error = "no {} key found in definition".format(part)

        return False, error, {}

不確定我是否可以添加很多關于 Python 中一般驗證的最佳實踐。我認為使用這樣的通用結構幾乎可以根據需要完成。


查看完整回答
反對 回復 2021-11-16
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

如果您明確命名丟失的鍵而不是執行類似的操作


if "name" not in item or "type" not in item or "of" not in item:

    return False, "key missing in definition", {}

你可能應該做對并遍歷所有這些。調整 Dan D. 的解決方案:


error = ''

for key in ('name', 'type', 'of'):

    if key not in item:

        error += " no {} key found in definition".format(key)

if error != ''

    return False, error, {}

或者類似的東西。如果缺少名稱和類型怎么辦?您只會在示例中看到缺少的名稱。


查看完整回答
反對 回復 2021-11-16
  • 3 回答
  • 0 關注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號