Dor*_*ora 1 python django unicode if-statement compare
我不确定哪个部分我做错了但不知何故我试图比较两个值,我100%确定它们匹配但不知何故代码不会执行.
假设我有这个模型(请原谅模型和字段名称有点拼写错误)
class TestOne(models):
gender = models.Charfield(max_length=10, choices=GENDER_CHOICES)
Run Code Online (Sandbox Code Playgroud)
我的选择
GENDER_CHOICES = (("MALE", "MALE"), ("FEMALE", "FEMALE"))
Run Code Online (Sandbox Code Playgroud)
我很确定我的gender领域是MALE针对该对象所以我正在做这个声明,检查它是否MALE有所作为.
if a.gender is `MALE`:
# do something here
Run Code Online (Sandbox Code Playgroud)
但它永远不会真实地达到它.我查a.gender了一个unicode类型,所以我甚str(a.gender)至做了确保它也是一个字符串,但仍然没有运气.
我在这里做错了吗?
PS我打印过a.gender并确保输出结果MALE
提前致谢
不要这样做:
if a.gender is 'MALE':
# equivalent to:
# id(a.gender) == id('MALE')
Run Code Online (Sandbox Code Playgroud)
改为:
if a.gender == 'MALE':
Run Code Online (Sandbox Code Playgroud)
的'is'关键字的检查对象的身份,即,是否两个变量/对象引用相同的存储器地址.'=='检查类' '__eq__'方法中定义的相等性,在您的情况下将执行预期的字符串比较.
检查Python中的`==`和`is`是否有区别?详细解释.