2013-09-23 34 views

回答

6

更新:我不明白爲什麼你就是不:

from a_module import * 

...如果你想要做的是重新發布的一切a_module發佈...這是一個連PEP8「制裁」使用明星進口的情況,這通常令人沮喪。

...現在如果上述方案是不是你的作品,這裏或多或少手寫相當於:(含模塊)

dir()應該給你的屬性列表中的對象:

__all__.extend(dir(a_module)) 

如果您想篩選出的東西開始___,只是:

__all__.extend(x for x in dir(a_module) if not x.startswith('_')) 

這個S無論該模塊是否聲明__all__都可以工作。

而且,要完全模仿Python的考慮所有非下劃線前綴事情模塊作爲公衆,除非__all__聲明的默認行爲:

+0

適合自己 - 我更喜歡三元論,如果:在這種情況下,我覺得它只是可讀的,其優點是它不會重複'__all __。extend(...)'部分邏輯,所以它完全是乾的。但是我也更習慣於函數式編程風格,其中'if-else'(就像該語言的其他部分一樣)是一個表達式,因此任何東西都可以嵌套。 –

+0

我認爲最好寫塊if ... else語句,而不是內聯。內聯如果有時看起來像魔術一樣 – kharandziuk

+0

無論是神奇的,正常的還是美好的,都是真正的習慣問題,你的背景是什麼,以及你喜歡一件事或一種風格的傾向。但是,我更想知道爲什麼'from a_module import *'不適合您的需求。 –