[英]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.