簡體   English   中英

為什么Python的線程模塊中有兩種具有相同功能的方法?

[英]Why two methods with same functionality available in threading module in Python?

對於threading.Thread ,有兩個似乎具有相同功能的方法:

  • is_aliveisAlive

對於threading.Event ,有以下方法:

  • is_setisSet

類似的threading模塊,同樣可以使用這些方法

  • currentThreadcurrent_thread
  • active_countactiveCount

因此,問題是,盡管看起來這兩種方法都具有相同的功能,但為什么有兩種方法可用?

另外, 哪一個更好

這是風格問題。 在強調使用下划線樣式作為Python樣式之前,已經有使用不同樣式的庫了。 因此,對函數進行了重命名,但是由於兼容性問題,還必須保留舊名稱版本。

無論如何, PEP 8建議使用下划線樣式,因此我建議堅持使用下划線樣式。

通常,Python使用lowercaselowercase_with_underscores作為方法和函數名稱 threading模塊在首次添加到Python時,錯誤地為許多名稱使用了mixedCase 他們后來添加了lowercase_with_underscores名稱作為別名,以與其他Python保持樣式一致性。

通常,除非您的代碼需要在Python 2.5或更早版本上運行(在2.6中添加了固定名稱),否則請使用lowercase_with_underscores名稱。 也就是說, 文檔說明

注意:從Python 2.6開始,此模塊提供了符合PEP 8的別名和屬性,以替換受Java線程API啟發的camelCase名稱。 此更新的API與多處理模塊的API兼容。 但是,尚未為棄用camelCase名稱設置任何時間表,Python 2.x和3.x仍然完全支持它們。

我不確定100%,但我認為它只是來自不同版本的Python的別名,它們具有相同的功能

原因是保持與舊版Python的兼容性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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