I am bit curious to know why Django 1.9 replaced tuples () with lists [] in settings, URLs and other configuration files

我刚刚升级到Django 1.9,注意到了这些变化.背后的逻辑是什么?

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles'
    ]

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

urls.py

urlpatterns = [
    url(r'^', admin.site.urls),
]

这些变化有什么不同吗?

推荐答案

#8846期(我的重点)对此进行了解释:

在文档中​创建自己的设置有一个

这是铺位.分析表明,元组的运行速度并不比列表快

另请参见this answer了解更多最新的讨论.

另外answer个(与这个问题没有直接关系)表明accessing elements实际上比list更快.

Update and further information:.上述问题在几年前就已经解决了,这是正确的,但我之所以把它包括进来,是因为它解释了这一决定背后的理由,而且许多类似的讨论都涉及同一张票.实际实施决策是在core Django developer Aymeric Augustin启动following discussion on django-developers之后触发的:

我更喜欢[lists]个,原因有两个:

1) 所有这些设置都是类似事情的序列.这些价值观是

2) 列表不容易出现"单项元组中缺少逗号"的情况

而切换到列表实际上发生在issue #24149年,这也提到了上述讨论.

Python-3.x相关问答推荐

Python根据阈值对数字进行分组

Django内置注销视图`不允许的方法(GET):/USERS/LOGOUT/`

如何从包含SPAN文本的标记中获取链接

Python-Django 设置 Pandas DataFrame 的多索引不会分组/合并最后一个索引

将数据框中的值与另一个数据框中的多列进行比较,以获取条目以有效方式匹配的列表列表

Python3:是否可以将变量用作函数调用的一部分

仅当从 USB 摄像头接收到新图像时才处理图像

使用gekko python的混合整数非线性规划

如何从形状汇总图中提取实际值

通过点和线计算CV2 Homography

在python中循环处理时并行写入文件

Python:遍历子列表

multiprocessing.Queue 中的 ctx 参数

pysftp vs. Paramiko

发送Electron邮件时的 MIMEText UTF-8 编码问题

如何在 Python 中计算两个包含字符串的列表的 Jaccard 相似度?

aiohttp+sqlalchemy:在回滚无效事务之前无法重新连接

迭代器也是可迭代的吗?

BeautifulSoup 的 Python 3 兼容性

在 PyCharm 中配置解释器:请使用不同的 SDK 名称