Python的try/except函数总是返回假
我正在尝试找出这段简短代码中的问题。任何帮助都将不胜感激。不管我把 User.email 设置成什么,它总是返回 false。
def add(self):
#1 -- VALIDATE EMAIL ADDRESS
#Check that e-mail has been completed
try:
#Validate if e-mail address is in correct format
if (isAddressValid(self.email) == 0):
self.errors['email'] = 'You have entered an invalid e-mail address';
return 0
except NameError:
self.errors['email'] = 'Please enter your e-mail'
return 0
>>> u = User()
>>> u.email = 'test@example.com'
>>> u.add()
0
>>> print u.errors
{'email': 'Please enter your e-mail'}
我已经确认返回的 false 是因为出现了 NameError。
另外,isAddressValid() 只是一个用来检查电子邮件地址格式的方法。
谢谢。
5 个回答
1
如果我要重写这段代码,我会选择像这样的方法:
def add(self):
try:
if not isAddressValid(self.email):
self.errors['email'] = 'You have entered an invalid e-mail address';
except NameError:
self.errors['email'] = 'Please enter your e-mail'
return 'email' not in self.errors
1
其实你有两个值。
0
None
如果你打印这个值,而不是在条件判断里用它,你就能看到这两个情况。可以考虑加一些打印语句,看看这个值到底是什么。
if (isAddressValid(self.email) == 0):
如果这个条件为真,你会得到 0
。
如果这个条件为假,你会得到 None
。
而这个异常会给你 0
。
5
你没有在函数的正面情况中加上一个 return
语句……另外,当一个函数没有 return
语句时,调用这个函数的地方会得到 None
,也就是什么都没有的意思……
def add(self):
#1 -- VALIDATE EMAIL ADDRESS
#Check that e-mail has been completed
try:
#Validate if e-mail address is in correct format
if (isAddressValid(self.email) == 0):
self.errors['email'] = 'You have entered an invalid e-mail address';
return False
except NameError:
self.errors['email'] = 'Please enter your e-mail'
return False
return True