字符串匹配在python中不起作用

这是我的Django代码

print request.user.role
print request.user.role is "Super"
print request.user.role == "Super"
print "Super" is "Super"

并且控制台上的输出是

Super
False
False
False
True

我想知道为什么它不匹配确切的字符串

最佳答案 请不要使用字符串比较来检查用户角色.这种方法容易出错,可能会为新创建的字符串使用更多内存,并且总体上是危险的.例如,如果代表角色的值不是它的名称,则必须自己跟踪名称 – 值映射.或者,如果库会改变它的想法并将名称交换为整数等.

提供此类功能的所有库都具有角色枚举,其中包含角色的所有值.所以,例如,在django-user-roles你可以做到

user.role.is_super # maybe role.is_Super
# or
from userroles import roles
user.role == roles.super # maybe roles.Super

这是更可读和更安全的方法.

点赞