max(float('nan'), 1)
viene valutato come nanPython: funzioni built-max/min dipendono ordine parametro
max(1, float('nan'))
viene valutata a 1
E 'il comportamento previsto?
Grazie per le risposte.
max
genera un'eccezione quando l'iterabile è vuoto. Perché Python non ha rilevato un'eccezione con max
quando è presente nan
? O almeno fare qualcosa di utile, come restituire nan
o ignorare nan
. Il comportamento attuale è molto pericoloso e sembra completamente irragionevole.
Ho trovato una conseguenza ancora più sorprendente di questo comportamento, quindi ho appena pubblicato un related question.
Davvero ... non sembra rompere il 'nan', perché 'max (0.5, float ('nan'), 1) 'restituisce 1. – khachik
@khachik: Sto solo dicendo che il risultato' max' dipende dall'ordine dei parametri, che per me è un po 'inaspettato, anche se è successo solo in un esempio. Ma in effetti funziona anche sul tuo esempio: 'max (float ('nan'), 1, 0.5)' restituisce nan. – max
Il bug non è nel massimo. Il bug è il fatto che stai usando punti fluttuanti e assumendo che abbiano un comportamento matematico significativo. – Antimony