Python相同模块名称约定

时间:2017-05-27 20:15:11

标签: python naming convention

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

如果包中的所有模块都是唯一命名的,那么无论嵌套是什么? PEP8和PEP423似乎没有解决这个问题。

2 个答案:

答案 0 :(得分:4)

不,不要求不同级别的名称必须不同。每个级别都是单独的命名空间。如果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

答案 1 :(得分:0)

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

当然,您可以使用相同的命名空间包。

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