对于下面这个问题,我找到了一个非常有用的答案,但对我来说有点不清楚。Why is "if not someobj:" better than "if someobj == None:" in Python?
根据我对"if not x: do something“工作原理的理解,”if not“只是检查x的值是否为True。如果不是,它会做一些事情。
我正在学习Django,在我试图理解的一个示例中,他们使用“如果不是:”逻辑来设置购物车。
下面是比我聪明得多的人是如何编写代码的:
在settings.py文件中:
CART_SESSION_ID = 'cart'在cart.py文件中:
from django.conf import settings
class Cart(object):
def __init__(self, request):
"""
Initialize the cart.
"""
self.session = request.session
cart = self.session.get(settings.CART_SESSION_ID)
if not cart:
# save an empty cart in the session
cart = self.session[settings.CART_SESSION_ID] = {}
self.cart = cart所以在我看来CART_SESSION_ID是一个字符串,它的初始值是'cart‘。
变量购物车必须是存储产品ids、价格和数量的字典。
由于"cart“的初始值是一个带有值的字符串,因此"if not cart:”返回"True“是否永远不会执行?
发布于 2017-07-12 07:39:53
是的,它在你的例子中是多余的,因为在django-by-example教程中没有使用实际的会话处理机制。
实际上必须实现的想法是,它将在CART_SEESION_ID为False或None时执行,因此必须创建一辆新车,以便生成默认购物车(空cart )。
所以,是的,你是对的,在你的示例中,if行永远不会执行,但这个示例永远不会在现实世界的应用程序中使用。
https://stackoverflow.com/questions/45045984
复制相似问题