我知道从一个数字开始命名一个Python模块是一个坏主意,正如另一个问题所述,但我想知道在Python包中是否合法,而不是模块(aka文件).
例如.我想一个Django网站与一些外部API的整合,我想创建一个"第三者"包,包含文件对每个供应商,我不知道,如果调用它3rd_party会成为一个头痛或我应该命名third_party相反,避免问题.
注意:我不知道它是否重要,但我使用的是Python 2.7
Mar*_*ers 19
不,它不能.Python包和模块名称必须是有效的标识符:
identifier ::= (letter|"_") (letter | digit | "_")*
Run Code Online (Sandbox Code Playgroud)
标识符必须以字母或下划线开头.
该import语句定义模块,语法:
module ::= (identifier ".")* identifier
Run Code Online (Sandbox Code Playgroud)
包是一种特殊的模块(实现为带__init__.py文件的目录),不受这些规则的约束.
从技术上讲,你可以通过不使用import语句来解决这个问题,因为importlib模块和__import__钩子不强制执行限制.但是,为您的软件包或模块命名是不是一个好主意,这样您就需要使用非标准的导入机制来使其工作.
是。
# 1/x.py dont forget 1/__init__.py
x = 42
Run Code Online (Sandbox Code Playgroud)
从另一个文件导入
# test.py
p1 = __import__('1.x')
print p1.x.x
Run Code Online (Sandbox Code Playgroud)