Cosa si intende per "usare il principio EAFP" in Python? Potresti fornire qualche esempio?Qual è il principio EAFP in Python?
risposta
Dal glossary:
più facile chiedere perdono che il permesso. Questo comune stile di codifica in Python presuppone l'esistenza di chiavi o attributi validi e rileva eccezioni se l'assunzione risulta falsa. Questo stile pulito e veloce è caratterizzato dalla presenza di molte dichiarazioni
try
eexcept
. La tecnica è in contrasto con lo comune a molti altri linguaggi come C.
Un esempio potrebbe essere un tentativo di accesso a un tasto di dizionario.
EAFP:
try:
x = my_dict["key"]
except KeyError:
# handle missing key
LBYL:
if "key" in my_dict:
x = my_dict["key"]
else:
# handle missing key
La versione LBYL deve cercare la chiave all'interno del dizionario due volte, e potrebbe anche essere considerato un po 'meno leggibile.
abbreviato con alcuni esempi. –
Un miglioramento sarebbe che un altro vantaggio è l'evitare le condizioni di gara ... ad esempio, prova ad aprire un file e se lo ottieni, ce l'hai. Invece di vedere * se riesci a ottenerlo *, prova ad ottenerlo in seguito e renditi conto che nel minuto di tempo tra il controllo e l'accesso, puoi ottenerlo più a lungo. –
Python fornisce anche un modo per evitare entrambi, se il gestore sta semplicemente assegnando un valore predefinito a 'x' quando la chiave non esiste:' x = mydict.get ('chiave') 'restituirà' Nessuno 'if '' key'' non è in' my_dict'; si potrebbe anche fare '.get ('chiave',
- 1. Eccezioni Python: EAFP e cosa è davvero eccezionale?
- 2. Qual è un esempio del principio di responsabilità singola?
- 3. Qual è il significato di "_" in python?
- 4. Qual è il significato di [...] in python?
- 5. In SOLIDO, qual è la distinzione tra SRP e ISP? (Principio della singola responsabilità e principio di segregazione dell'interfaccia)
- 6. Seguendo il principio ASCIUGATURA in ASP.NET
- 7. Qual è il python per Java BigDecimal?
- 8. Qual è il miglior editor python?
- 9. Questo rompe il mio principio SOLIDO?
- 10. qual è il significato di% r in python
- 11. Qual è il prefisso u in una stringa Python?
- 12. Qual è il miglior metodo di derivazione in Python?
- 13. Qual è il punto di float ('Inf') in Python?
- 14. Qual è il valore di ritorno di Socket.accept() in python
- 15. Qual è il vantaggio dell'uso dell'istruzione 'with .. as' in Python?
- 16. qual è il codec per video mp4 in python OpenCV
- 17. Qual è il valore logico di "string" in Python?
- 18. Qual è il vantaggio dell'utilizzo di metodi statici in Python?
- 19. RAII in Python: qual è il punto di __del__?
- 20. Modo corretto per modificare il valore del dizionario python
- 21. astratti metodi e il principio aperto-chiuso
- 22. Qual è l'equivalente di "gem" in python?
- 23. Qual è l'inverso di date.toordinal() in python?
- 24. Reflection sta rompendo il principio di incapsulamento?
- 25. La programmazione difensiva viola il principio DRY?
- 26. L'override viola il principio Aperto/Chiuso?
- 27. Chiunque può spiegare il principio dell'algoritmo hq2x?
- 28. Principio dei migliori principi
- 29. Qual è il modo migliore per attivare le stampe Python?
- 30. Qual è il metodo corretto per stampare le eccezioni Python?
Non secondo Guido: https://mail.python.org/pipermail/python-dev/2014-March/133118.html –