from MODULE import _" 在Python中有什么作用?
在“Getting things gnome”的代码中,我发现了这个导入语句
from GTG import _
但是我完全不知道这是什么意思,文档里也没见过这个,快速搜索了一下也没有找到相关信息。
2 个回答
4
这段话的意思是,把函数、类或模块 _
导入到当前的命名空间里。这样,你就不需要每次都输入 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
函数是来自哪个模块。
13
from GTG import _
这行代码是从 GTG
模块中引入 _
这个函数到“当前”的命名空间里。
通常情况下,_
这个函数是 gettext.gettext()
的别名,也就是一个用来显示给定消息的本地化版本的函数。文档中会给出一个图示,说明在一个遥远的模块中通常会发生什么:
import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print _('This is a translatable string.')