Bene, Python non ha interfacce, ha metaclassi e consente la digitazione anatra. Python ha delle list comprehensions, che sono molto potenti e non esistono in Java. Java ha un ricco sistema di tipi con molte strutture dati e Python ha solo liste. Quindi, se stai sfruttando ciò che Python ha invece di provare a ricreare ciò che Java ha in Python, probabilmente stai scrivendo il codice Pythonic.
Ma per quanto riguarda il codice OO, ci sono alcuni fondamentali dello stile che non dovrebbero cambiare da una lingua all'altra: dovresti sempre cercare di scrivere codice che sia Shy e DRY, sia che tu stia scrivendo in Applescript, Python, Java, o C ++.
---- ---- Modifica
Come sottolinea pedantemente @delnan, ci sono in realtà cinque tipi di dati compositi definiti da Python a livello di kernel (lista, dict, tuple, set e frozenset, secondo la mia copia di "Python in a Nutshell"). Anche se questo è vero, non è realmente pertinente al punto che sto cercando di fare: Python si basa su liste come la struttura dati essenziale. Sì, è possibile utilizzare un elenco come stack, ma è possibile utilizzare lo stesso stesso elenco come una coda. E poi una pila di nuovo.
Java, d'altra parte, ha una struttura dati del kernel (Array, secondo "The Java Pocket Guide"), ma in generale, non è possibile ottenere molto da fare in Java senza importare collezioni. hai accesso a una libreria di tipi "ricca" (in tal senso intendo immensamente complessa) con cui ottenere la stessa funzionalità che avevi con la lista di Python.
Naturalmente, entrambi i linguaggi hanno classi e Java ha interfacce, ma mentre questi sono tipi di dati compositi, non sono realmente strutture di dati in senso letterale.
Una differenza consiste nel fatto che non è possibile eseguire il pop di un elemento da una coda Java e non è possibile passare da qualche parte un oggetto Java Queue che si aspetta un elenco collegato Java. Quindi, per "ricco", in realtà intendo "rigido".
Quindi per spiegare cosa intendo dicendo "Python ha solo elenchi", quello che voglio dire è che puoi fare praticamente tutto ciò che devi fare in Python che dovresti fare con le Collezioni Java usando il tipo Elenco Python. Questo singolo tipo fa il lavoro di moltissimi tipi in Java.
Che cosa significa questo per il programmatore Python? Significa che puoi sfruttare il tipo Elenco Python per scrivere codice diretto molto conciso senza l'uso di librerie aggiuntive e la pithiness (ovvero la caratteristica di trasmettere più valore in meno caratteri) è una caratteristica fondamentale del codice "Pythonic" .