簡體   English   中英

什么“來自MODULE import _”在python中做什么?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM