請(qǐng)教python編碼風(fēng)格和異常處理問題
問題描述
請(qǐng)教各位個(gè)問題,編寫web應(yīng)用注冊(cè)模塊,如下面這段代碼,服務(wù)端需要檢測(cè)用戶的傳遞的參數(shù)。下面幾種寫法哪個(gè)更好,異常處理方式是否正確,或者各位是否有更好的方式呢
def check_args(account, passwd, birthday, name): # 第一種寫法 if account == ’’ or not isinstance(account, str):raise ValueError if passwd == ’’ or not isinstance(passwd, str):raise ValueError if birthday == ’’ or not isinstance(birthday, str):raise ValueError if name == ’’ or not isinstance(name, str):raise ValueError # 第二種寫法 if (account == ’’ or not isinstance(account, str)) or (passwd == ’’ or not isinstance(passwd, str)) or (birthday == ’’ or not isinstance(birthday, str)) or (name == ’’ or not isinstance(name, str)):raise ValueError return Nonedef user_register(form): account = form['account'] passwd = form['passwd'] birthday = form['birthday'] name = form['name'] # 異常放在這一層,但在main函數(shù)調(diào)用 user_register 如何檢測(cè)是否成功呢 # 是當(dāng)前異常繼續(xù)向外拋,還是通過返回值 try:check_args(account, passwd, birthday, name)insertUserInfo(account, passwd, birthday, name) except ValueError:pass except MySQLError:pass except Exception:pass
問題解答
回答1:既然是web應(yīng)用,你應(yīng)該把這些驗(yàn)證抽象出來,自己寫驗(yàn)證模塊或者用別人的驗(yàn)證模塊
回答2:為什么不樸素的返回一個(gè)True or False呢,異常一般是指程序出現(xiàn)了錯(cuò)誤,但注冊(cè)信息不合法并不帶表程序出了錯(cuò),所以用條件判斷返回真假值就可以了。另外一般來說表單的合法判斷在前端處理比較好。
相關(guān)文章:
1. python - Django有哪些成功項(xiàng)目?2. 實(shí)現(xiàn)bing搜索工具urlAPI提交3. MySQL主鍵沖突時(shí)的更新操作和替換操作在功能上有什么差別(如圖)4. Python從URL中提取域名5. 關(guān)于mysql聯(lián)合查詢一對(duì)多的顯示結(jié)果問題6. 數(shù)據(jù)庫(kù) - Mysql的存儲(chǔ)過程真的是個(gè)坑!求助下面的存儲(chǔ)過程哪里錯(cuò)啦,實(shí)在是找不到哪里的問題了。7. node.js - 微信小程序websocket連接問題8. 直接打字符不可以嗎?>和>有區(qū)別嗎9. node.js - windows10下的npm全局路徑的復(fù)原或者將npm徹底刪除?10. Python中使用超長(zhǎng)的List導(dǎo)致內(nèi)存占用過大
