我正在研究一个Django项目.我们称之为myproject.现在我的代码乱七八糟myproject.folder.file.function.反正我是否可以删除所有我的导入前缀的必要性myproject.?如果我想稍后重命名我的项目怎么办?当我从它导入的文件在同一个项目中时,我需要为这样的东西添加前缀,这让我感到很恼火.不应该是必要的.
from myproject.folder import file(可怕的名字,顺便说一句,践踏内建类型file,但那是另一咆哮;-),然后使用file.function-如果file(得恨那个模块的名称;-)仍然太长你,例如添加as fi到from语句,并使用fi.function.如果你想将myproject重命名为myhorror,你只需触摸from解决它的语句(你可以使用相对导入,但那些会破坏2.5的兼容性,因此现在禁止你从App引擎 - 为代价支付太高的代价方便,对我来说至少;-).
编辑:如果几乎每个文件都需要一些给定的支持模块,这是确保支持模块位于sys.path上的目录(或zipfile)中的一个强有力的理由(即使只有30%的文件需要支持模块! - ).
如果您不介意破坏文件:
from myproject.folder import file
Run Code Online (Sandbox Code Playgroud)
如果你想让文件更短:
import myproject.folder.file as f
Run Code Online (Sandbox Code Playgroud)
如果您真的很喜欢,您可以创建自己的导入声明:
head = 'myproject.folder.'
def my_import(name,*args,**kwargs):
try:
return __import__(name, *args, **kwargs)
except ImportError:
return __import__(head+name, *args, **kwargs)
file = my_import('file')
Run Code Online (Sandbox Code Playgroud)
你也可以彻底邪恶,破解内置的 python import 语句:
head = 'myproject.folder.'
_import = __import__ # don't clobber __import__ yet
def my_import(name,*args,**kwargs):
try:
return _import(name,*args,**kwargs)
except ImportError:
return _import(head+name, *args, **kwargs)
__builtins__.__import__ = my_import # God just killed a maintainer
# elsewhere, after the above abomination has run:
import file # I hope you are happy.
Run Code Online (Sandbox Code Playgroud)
事实上,我夸大了破坏内置函数的危害。它没有那么坏。但它有点毛茸茸的。
| 归档时间: |
|
| 查看次数: |
1513 次 |
| 最近记录: |