2013-01-08 74 views
0

同時在我的劇本的一個線程,我用來自串和Python的線程join()方法。我試圖用import ... as重命名模塊名稱是這樣的:使用join()方法的字符串和在Python中

import str.join as sjoin 
import threading.Thread.join as tjoin 

但我始終不能得到的字符串連接正確導入。我查了官方文檔,都是join()類路徑應該是對的。我該怎麼做才能同時使用這兩個連接?

編輯

起初我沒有進口str.join()。但是由於我得到了類型錯誤,我以爲我應該重命名join()。但後來,我意識到,我通過做錯事到str.join(),這纔是真正的原因,我得到了錯誤類型。我的錯!

+0

爲什麼不用',而不是'str.join(東西)''myStr.join(listOfStrs)? – inspectorG4dget

回答

2

str.join()是一種方法,在一根繩子上的情況下使用,因此,例如:

>>> ", ".join([1, 2, 3]) 
1, 2, 3 

不需要輸入任何東西。我在這裏用一個字符串文字作爲例子,但是當然可以使用任何字符串。這就是將迭代(傳遞給方法)中的字符串連接起來的'粘合劑'。

這也適用於threading.Thread.join() - 您應該製作Thread類的實例並在該實例上使用join()方法。

注意的是,由於Python的工作方式,你可以直接從類訪問這些方法,然後通過實例作爲第一個參數,但是,這通常是一個非常糟糕的主意,因爲它是難以閱讀,更省力比平時打電話。

+0

起初我沒有進口str.join()。但是由於我得到了類型錯誤,我以爲我應該重命名join()。但後來,我意識到,我通過做錯事到str.join(),這纔是真正的原因,我得到了錯誤類型。謝謝。 – Conan

-1

str是一個內置的,而不是一個模塊,所以你不能從它導入。然而,你可以這樣做:

sjoin = str.join 
import threading.Thread.join as tjoin 
+0

-1,這不是使用連接方法的好方法。 –

+0

爲什麼? '','。join'當然更常見,但有兩個明確的參數沒有什麼錯。如果你需要'itertools.starmap'中的'str.join'怎麼辦? OP正在導入,就像它是一個單獨的功能一樣。 –

+0

在這種情況下,我認爲一個生成器表達式會比較明智的,因爲它會大量增加可讀性。一般來說,使用這樣的函數是一個糟糕的主意,因爲它不可讀。 –

相關問題