python模块导入规则_Python中的模块导入和初始化

如果只遵守一些流行的python约定和标准,那么您可以做一些事情来改进您的组织。

如果您搜索这个主题,您将不可避免地遇到推荐PEP8准则的人。这些是组织python代码的事实上的规范标准。Modules should have short, all-lowercase names. Underscores can be

used in the module name if it improves readability. Python packages

should also have short, all-lowercase names, although the use of

underscores is discouraged.

根据这些指导原则,项目模块的命名方式应如下:foo/

__init__.py

foo.py

module1.py

module2.py

module3.py

我发现通常最好避免在__init__.py中不必要地导入模块,除非是出于名称空间的原因。例如,如果希望包的命名空间如下所示from foo import Foo

而不是from foo.foo import Foo

那么把from .foo import Foo

在你的__init__.py里。随着包变大,一些用户可能不想使用所有的子包和模块,因此通过在__init__.py中隐式导入这些模块来强制用户等待加载所有这些模块是没有意义的。此外,您还必须考虑是否希望将module1、module2和module3作为外部API的一部分。它们是否仅由Foo使用,而不打算用于最终用户?如果它们只在内部使用,那么不要将它们包含在__init__.py

绝对值from foo import module1

from foo import module2

from foo import module3

显式相对from . import module1

from . import module2

from . import module3

这将防止与其他包和模块一起出现任何可能的命名问题。如果决定支持Python3,也会更容易,因为Python3不支持当前使用的隐式相对导入语法。

而且,包中的文件通常不应该包含if __name__ == '__main__'

这是因为将文件作为脚本运行意味着它不会被视为其所属包的一部分,因此它将无法进行相对导入。

向用户提供可执行脚本的最佳方法是使用^{} or ^{} feature of ^{}。根据使用的方法,组织脚本的方式可能有所不同,但我通常是这样组织脚本的:foo/

__init__.py

foo.py

...

scripts/

foo_script.py

setup.py

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值