亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用bool作為整體是Pythonic嗎?

使用bool作為整體是Pythonic嗎?

PIPIONE 2019-08-08 17:07:19
使用bool作為整體是Pythonic嗎?False相當于0并且True是等價的,1因此可以做這樣的事情:def bool_to_str(value):     """value should be a bool"""     return ['No', 'Yes'][value]bool_to_str(True)請注意值是如何bool但是用作int。這是使用Pythonic還是應該避免?
查看完整描述

3 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

我將是一個奇怪的聲音(因為所有的答案都在譴責使用這個事實,False == 0并且True == 1,正如語言所保證的那樣)因為我聲稱使用這個事實來簡化你的代碼是完全沒問題的。

從歷史上看,邏輯真/假操作傾向于簡單地0用于虛假和1真實; 在Python 2.2的生命周期過程中,Guido注意到有太多的模塊開始使用諸如此類的分配,false = 0; true = 1并且這產生了樣板和無用的變化(后者因為真假的大寫到處都是 - 有些全部使用了-caps,一些全小寫,一些cap-initial)因此引入了bool子類int及其TrueFalse常量。

由于我們很多人擔心Python新手會使用新類型和常量來限制語言的能力,所以當時有一些阻力,但Guido堅持認為我們只是悲觀:沒有人會理解Python這么糟糕,例如,為了避免完全自然地使用FalseTrue作為列表索引,或總結,或其他這樣完全清楚和有用的習語。

這個線程的答案證明我們是正確的:正如我們所擔心的那樣,對這種類型和常量的角色的完全誤解已經出現,人們正在避免,更糟糕的是,敦促其他人避免,完全自然的Python構造支持無用的回轉。

與這種誤解的趨勢作斗爭,我敦促每個人都使用Python作為Python,而不是試圖強迫它進入其功能和首選風格完全不同的其他語言的模式。 在Python,真假像1和0 99.9%,不同的僅僅在他們str(...)(從而repr(...))形式-為每一個不同的字串其他操作,只需隨意使用,而不必扭曲。這適用于索引,算術,位操作等等。


查看完整回答
反對 回復 2019-08-08
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

我和Alex在一起。False==0而且True==1,這并沒有錯。

不過,在Python 2.5及更高版本中,我會使用Python的條件表達式來編寫這個特定問題的答案:

def bool_to_str(value):
  return 'Yes' if value else 'No'

這樣就沒有要求參數實際上是一個bool - 就像if x: ...接受任何類型一樣x,bool_to_str()函數應該在傳遞None,字符串,列表或3.14時做正確的事情。


查看完整回答
反對 回復 2019-08-08
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

一定:

def bool_to_str(value):
    "value should be a bool"
    return 'Yes' if value else 'No'

更具可讀性。


查看完整回答
反對 回復 2019-08-08
  • 3 回答
  • 0 關注
  • 495 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號