Scrapy 的 Middleware 为什么要用字典的形式设置顺序而不直接用一个列表?

2019-08-20 20:04:20 +08:00
 morefreeze

从新增的角度,列表也可以方便地在中间插入一个元素,删除也同理

唯一的优势是可以用 None 来表示不使用,而列表虽然可以直接删掉,但容易让人不知道原来还存在过这个元素

1561 次点击
所在节点    Python
1 条回复
lshu
2019-08-21 08:58:54 +08:00
其实主要的原因是一个 settings merge 的问题。
假设 scrapy 默认中间件 settings 字典为 {'a':1,'b':10,c:'13'} ,而你自定义了 中间件 此时为 {'d':8,'e':12,'a':None} 这样能够很好地合并之后 {'a':None,'d':8,'b':10,'e':12,c:'13'} , 并且合并之后有序。 反之 如果是 列表 则做不到这种功能。 除非你这样写 [('a':1),('b':10)] 哈哈哈。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/593623

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX