2013-04-12 20 views
-1

功能minmax非常靈活;他們可以接受任意數量的參數,或者一個可迭代的單個參數。 anyall在進行任意大小的迭代時類似,但它們不會佔用多個參數。這種行爲差異有什麼原因嗎?我認識到這個問題似乎無法回答,但是增強Python的過程相當開放;許多看似隨意的設計決定都是公共記錄的一部分。我曾經見過類似的問題,我希望這個問題也可以解決。爲什麼沒有人和所有人都需要像min和max這樣的多個參數?

靈感來自這個問題:Is there a builtin function version of and and/or or in Python?

+0

當我想到通用的量詞如「any」和「all」時,我並不期望在量化時對它們進行過濾。這同樣適用於這裏 - 如果我對一個元素或所有元素都是真的感興趣,爲什麼我要過濾[無論]? – Makoto

+0

我猜像'all([0,0],1)'會有點混亂。再次,'max([0,0],1)'不會好得多...... – wim

+0

@wim,'min([0,0],1)'也不符合你的期望。垃圾進垃圾出。 –

回答

1

Python中的許多功能都基於網有多少人需要他們的建議,但他們也必須符合語言的風格。人們經常需要這樣做:

max_val = 0 
for x in seq: 
    # ... do complex calculations 
    max_val = max(max_val, result) 

它保證使用多個參數。它看起來不錯。我沒有聽說有人需要使用any(x, y, z),因爲它最常用於序列。對於少數值,您可以只使用邏輯運算符,並且對於很多值,您確實應該使用列表,否則代碼會變得雜亂無章。我確信沒有多少想法能夠解決這個問題,因爲它確實不會讓任何人受益,但它並沒有受到很大的需求,所以Python開發人員並不擔心。

+0

我同意遵守這種語言的風格,但我認爲在類似函數中有一個先例會是模仿的風格。任意差異總是會引起混淆。 –

+0

@MarkRansom如果我們添加該功能,人們仍然在使用'x和y和z'還是應該使用'all(x,y,z)'?我認爲這會造成更多混亂。 '和'效果更好,因爲我們已經在其他線程中討論過 – jamylak

+0

完全不同。 ''''必須返回其中一個操作數,而'all'將返回bool – wim

相關問題