猿问

python django 通过装饰器或额外函数验证用户输入?还有什么更Pythonic的吗?

我正在开发一个网络应用程序。用户可以设置一些参数来运行一些算法。因此,当我在后端提取参数时,我想在启动算法之前验证它们,这可能会在长时间执行后崩溃。我应该在算法函数周围使用装饰器,还是应该将参数传递给像 def validate_parameters() 这样的函数,如果参数不正确,它会引发错误?



暮色呼如
浏览 92回答 1
1回答

慕莱坞森

Python 的“请求宽恕而不是许可”的经验法则是为了保持代码的简洁和易于理解。检查代码流程可以告诉您预期的路径是什么,并且很明显什么是异常条件。在这种情况下,不检查输入有两个缺点,并且您可以将所有检查隐藏在函数中,以便代码干净。我想说这里的 pythonic 代码是这样的    if not valididate_parameters(params):             raise ValidationException(get_validation_error_msg(params))这里你的validate_parameters函数只是做检查。该get_validation_error_msg函数负责生成可以呈现给用户的内容的繁重工作。例如,它可以检查验证函数在出现任何错误时尽早退出的所有参数。请注意,您必须将 Exception 定义ValidationException为 Exception 的子类并在更高级别捕获它。除了一般编程的想法之外,在 Django 中,如果您的参数来自用户填写的表单,您应该验证表单代码中的每个字段。
随时随地看视频慕课网APP

相关分类

Python
我要回答