[英]what does “from MODULE import _” do in python?
在Getting things gnome代码库中,我偶然发现了这个import语句
from GTG import _
并且不知道它意味着什么,从未在文档中看到这一点,并且快速的搜索/谷歌搜索没有改变任何东西。
from GTG import _
将_
函数从GTG
模块导入“当前”命名空间。
通常, _
function是gettext.gettext()
的别名, gettext.gettext()
是一个显示给定消息的本地化版本的函数。 该文档给出了远在远处的模块中其他地方通常会发生什么的图片:
import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print _('This is a translatable string.')
这会将函数/ class / module _
导入当前名称空间。 因此,您只需键入_
即可使用它,而无需键入GTG._
。
这是一些文档:
http://docs.python.org/tutorial/modules.html#more-on-modules
应该注意的是,你应该小心使用它。 执行此操作可能会污染当前命名空间,使代码更难以阅读,并可能引入运行时错误。 此外,永远不要这样做:
from MODULE import *
,因为它非常污染当前的命名空间。
当您知道只使用模块中的一个或两个函数/类/模块时,此技术非常有用,因为这样做只会导入列出的资产。
例如,如果我想使用itertools
模块中的imap
函数,我知道我不需要任何其他的itertools
函数,我可以写
from itertools import imap
它只会导入imap
函数。
就像我之前说的那样,这应该谨慎使用,因为有些人可能会这么认为
import itertools
# ... more code ...
new_list = itertools.imap(my_func, my_list)
比...更具可读性
from itertools import imap
# ... more code ...
new_list = imap(my_func, my_list)
因为它清楚地表明了imap
函数来自哪个模块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.