检查以下所有值的最佳方法是不是None。这就是我的尝试:
user = url_string.get('user', None)
subject = url_string.get('subject', None)
email = url_string.get('email', None)
from_address = url_string.get('from_address', None)
if not any(user, subject, email,from_address):
raise Exception('missing data')
答案 0 :(得分:5)
由于您希望定义所有这些代码,因此以下代码将非常pythonic。由于
比获得许可更容易请求宽恕。这个常见的Python 编码风格假定存在有效的键或属性 如果假设被证明是假的,则捕获异常。这干净又快 风格的特点是存在许多尝试和除外 声明。该技术与许多人共同的LBYL风格形成鲜明对比 其他语言,如C.
https://docs.python.org/2/glossary.html
try:
user = url_string['user']
subject = url_string['subject']
email = url_string.get['email']
from_address = url_string['from_address']
except KeyError:
raise Exception('missing data')
正如评论中所提到的,这确实留下了字典中的一个值为None并且可以通过测试的可能性。但是,我假设您使用get('...',None)
假设字典不包含空值。如果它确实包含空值,请考虑Moses Koledoye的解决方案。
答案 1 :(得分:4)
您可以在变量的可迭代中检查None
的包含:
if None in (user, subject, email, from_address):
raise Exception('missing data')
或者更好的方法是将代码置于try / of KeyError
之外,并在处理异常时引发自定义异常。
答案 2 :(得分:2)
试试这个:
if None in [user, subject, email,from_address]:
raise Exception('missing data')