在python中,如何测试可能是其他类型的变量?

时间:2014-01-06 16:31:15

标签: python python-3.x

我有一个测试,确保API返回成功。如果是,它继续,如果不是,它不会。但问题是,有时候这种结果不会以正确的类型回归。现在我正在测试它:

if response['result'] == "success": 

但如果另一端出现问题,我会返回一个NoneType对象,然后脚本崩溃。我应该:

#solution A, nested IFs checking lots of conditions
if type(response['result']) == "string": #not real code
    if response['result'] == "success: 

或者:

#solution B
try: 
    if response['result'] == "success": 
        etc
except: 
    print("Something terrible happened.") 

或者完全做其他事情更好吗?

2 个答案:

答案 0 :(得分:6)

错误处理是一个非常好的解决方案。如果您期待特定类型并且没有得到它,那么它肯定是异常

(您可能还希望(防御性地)不要假设response类似dict的对象将具有名为result的密钥。您可以使用get方法执行此操作。)

try:
    if response.get('result', '') == "success":
        …
except AttributeError: # Use AttributeError if you use the get method, TypeError if you use regular dict subscripting.
    # response was certainly not successful

答案 1 :(得分:3)

if response is not None and response['result'] == 'success':
    # Success
else:
    # Failure