Domanda

Stavo guardando il codice sorgente per la funzione built-in hasattr e ho notato un paio di righe che suscitato il mio interesse:

Py_INCREF(Py_False);
return Py_False;

...

Py_INCREF(Py_True);
return Py_True;

Non sono Py_False e Py_True valori globali? Solo per pura curiosità, il motivo per cui è Python mantenendo un conteggio di riferimento per queste variabili?

È stato utile?

Soluzione

E 'per rendere tutto uniforme di movimentazione oggetto. Se sto scrivendo codice C che gestisce un valore di ritorno da una funzione, devo aumentare e diminuire il conteggio dei riferimenti su tale oggetto. Se la funzione mi restituisce True, io non voglio avere a controllare per vedere se si tratta di uno di quegli oggetti speciali per sapere se per manipolare il conteggio dei riferimenti. Posso trattare tutti gli oggetti in modo identico.

Trattando Vero e Falso (e None, btw) la stessa di tutti gli altri oggetti, il codice C è molto più semplice in tutto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top