gpt4 book ai didi

python - 为什么 sys.path 是一个列表?

转载 作者:太空狗 更新时间:2023-10-30 02:55:04 24 4
gpt4 key购买 nike

为什么实现者会选择将 sys.path 制作成列表而不是有序集?

sys.path 作为列表可能会导致路径中出现多个重复项,从而减慢模块的搜索时间。

一个人为的例子就是下面这个愚蠢的例子

# instant importing
import os
import sys

for i in xrange(50000):
sys.path.insert(0, os.path.abspath(".")

# importing takes a while to fail
import hello

根据给出的评论和答案总结:

从下面的回复看来,列表是一个简单的结构,可以处理每个人 99% 的需求,它没有避免重复的安全功能,但它确实有一个原始的优先级排序,即元素的索引在列表中,您可以轻松地通过前置设置最高优先级或通过追加设置最低优先级。

添加更丰富的优先级,即在此元素之前插入将很少被用作此元素的接口(interface),这对于一项简单的任务来说需要付出太多的努力。正如已接受的答案所述,实际上不需要任何更高级的内容来涵盖这些额外的用例,因为历史上人们已经习惯了这一点。

最佳答案

  • 有序集是
  • 没有实际需要增加复杂性
    • List是一个很简单的结构,而ordered set基本上就是哈希表+列表+编织逻辑
    • 您不需要对集合设计用于的 sys.path 进行操作 - 检查确切路径是否在 sys.path 中 - 甚至更少, 做的很快
    • 相反,sys.path 的典型用例恰好是列表的那些用例:按顺序尝试元素,添加或追加元素

总而言之,既有历史原因,也缺乏实际需要。

关于python - 为什么 sys.path 是一个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43615300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com