【问题标题】:Python Same Module Name ConventionPython 相同模块名称约定
【发布时间】:2017-10-28 12:10:55
【问题描述】:

关于这个问题:
python: Two modules and classes with the same name under different packages

是否应该对包中的所有模块进行唯一命名,而不考虑嵌套? PEP8 和 PEP423 似乎没有解决这个问题。

【问题讨论】:

    标签: python naming convention


    【解决方案1】:

    不,不要求不同级别的名称必须不同。每个级别都是一个单独的命名空间。如果 foo.utilsfoo.bar.utils 在您的项目中有意义,那就这样做吧。

    例如,Python 标准库有email.messageemail.mime.messagemultiprocessing.connection 以及multiprocessing.dummy.connection 等等:

    $ ls ~/Development/Library/cpython/Lib/**/*.py  | grep -v __ | grep -v test_ | xargs basename | sort | uniq -c | grep -v '  1 ' | sort
       2 abc.py
       2 ascii.py
       2 client.py
       2 connection.py
       2 constants.py
       2 dump.py
       2 errors.py
       2 filelist.py
       2 handlers.py
       2 log.py
       2 message.py
       2 parse.py
       2 parser.py
       2 process.py
       2 queues.py
       2 server.py
       2 spawn.py
       2 text.py
       2 tree.py
       3 main.py
       4 config.py
       5 support.py
       6 util.py
    

    这是出现在包中的所有模块,不止出现一次,不包括测试,__init__.py__main__.py

    【讨论】:

      【解决方案2】:

      由于包是基于文件系统的,在正常情况下,你不能拥有相同的包,因为文件/目录没有重复。

      当然,您可以拥有相同的命名空间包。

      也可以在不同的路径中使用相同的包/模块名称。他们按顺序搜索,所以第一个获胜。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-26
        • 2012-05-17
        • 2020-04-04
        • 2019-07-03
        • 1970-01-01
        • 1970-01-01
        • 2011-02-12
        相关资源
        最近更新 更多