我正在学习python中的异常处理,并遇到以下代码片段:异常类:
from flask import jsonify
class InvalidUsage(Exception):
status_code = 400
def __init__(self, message, status_code=None, payload=None):
Exception.__init__(self)
self.message = message
if status_code is not None:
self.status_code = status_code
self.payload = payload
def to_dict(self):
rv = dict(self.payload or ())
rv['message'] = self.message
return rv
在此代码中,此行实际意味着什么
rv = dict(self.payload or ())
在to_dict
方法内? ()
代表什么?
答案 0 :(得分:5)
()
代表空元组。另一方面,or
在self.payload or ()
中的行为类似null coalescing operator,如果self.payload
的计算结果为false,则整个表达式返回空元组。
>>> False or 5
5
>>> [] or (1, 2, 3)
(1, 2, 3)
答案 1 :(得分:3)
答案 2 :(得分:1)
基本上发生的事情就是@turkus回答:
来自python shell:
type(()) <type 'tuple'>
所以它是一个元组。
它正在做的是检查self.payload
是否不是None
。
如果是None
,则变量rv
等于空dict
,如果不等于self.payload
。