Java -> Python?

stemmer
29

Foruten de dynamiske egenskapene til Python (og syntaks), hva er noen av de viktigste funksjonene i Python språk som Java ikke har, og vice versa?

Publisert på 08/09/2008 klokken 14:36
kilden bruker
På andre språk...                            


5 svar

stemmer
47

  1. List oppfattelser. Jeg finner meg selv ofte filtrering / kartlegging lister, og å kunne si [line.replace("spam","eggs") for line in open("somefile.txt") if line.startswith("nee")]er veldig hyggelig.

  2. Funksjoner er første klasse objekter. De kan sendes som parametre til andre funksjoner, som er definert inne annen funksjon, og har leksikalsk omfang. Dette gjør det veldig lett å si ting som people.sort(key=lambda p: p.age), og dermed sortere en haug med folk på deres alder uten å definere en tilpasset komparator klasse eller noe like ordrik.

  3. Alt er et objekt. Java har grunnleggende typer som ikke er objekter, noe som er grunnen til at mange klasser i standard bibliotek definere 9 forskjellige versjoner av funksjoner (for boolean, byte, røye, double, float, int, lang, Objekt, kort). Array.sorter et godt eksempel. Autoboxing hjelper, selv om det gjør ting vanskelig når noe viser seg å være null.

  4. Eiendommer. Python lar deg opprette klasser med skrivebeskyttet felt, dovent genererte felt, samt felt som er kontrollert på oppdrag for å sørge for at de er aldri 0 eller null eller hva du ønsker å beskytte mot, etc.'

  5. Standard og søkeord argumenter. I Java hvis du vil ha en konstruktør som kan ta opp til 5 valgfrie argumenter, må du definere 6 forskjellige versjoner av at konstruktøren. Og det er ingen måte i det hele tatt å siStudent(name="Eli", age=25)

  6. Funksjoner kan bare returnere en ting. I Python har du tuppel oppdrag, så du kan si spam, eggs = nee(), men i Java du trenger å enten ty til foranderlig ut parametere eller har en egendefinert klasse med 2 felt og deretter har to ekstra linjer med kode for å hente ut disse feltene.

  7. Innebygd syntaks for lister og ordbøker.

  8. Operatør Overbelastning.

  9. Generelt bedre utformet biblioteker. For eksempel, for å analysere et XML-dokument i Java, sier du
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("test.xml");
    og Python du sier
    doc = parse("test.xml")

Uansett, jeg kunne gå videre og videre med flere eksempler, men Python er bare samlet en mye mer fleksibel og uttrykksfulle språk. Det er også dynamisk skrevet, som jeg virkelig liker, men som kommer med noen ulemper.

Java har mye bedre ytelse enn Python og har mye bedre verktøystøtte. Noen ganger de tingene saken mye og Java er bedre språk enn Python for en oppgave; Jeg fortsetter å bruke Java for noen nye prosjekter til tross for like Python mye mer. Men som et språk jeg tror Python er overordnet for de fleste ting jeg finner meg selv ønsker å oppnå.

Svarte 08/09/2008 kl. 15:35
kilden bruker

stemmer
16

Jeg tror denne par artikler av Philip J. Eby gjør en god jobb diskuterer forskjellene mellom de to språkene (for det meste om filosofi / mentalitet i stedet for spesifikke språkfunksjoner).

Svarte 08/09/2008 kl. 14:40
kilden bruker

stemmer
5

En viktig forskjell i Python er betydelig mellomrom . Dette setter mange mennesker av - meg også i lang tid - men når du kommer i gang det virker naturlig og gjør mye mer fornuftig enn ;er overalt.

Fra et personlig perspektiv, har Python følgende fordeler over Java:

  • Ingen Sjekket Unntak
  • valg~~POS=TRUNC Argumenter
  • Mye mindre tekst og mindre ordrik generelt

Annet enn disse, denne siden på Python Wiki er et godt sted å lete med mange linker til interessante artikler.

Svarte 08/09/2008 kl. 14:43
kilden bruker

stemmer
3

Med Jython kan du ha begge deler. Det er bare i Python 2.2, men likevel svært nyttig hvis du trenger en innebygd tolk som har tilgang til Java runtime.

Svarte 08/09/2008 kl. 15:13
kilden bruker

stemmer
2

Bortsett fra det Eli Courtwright sa:

  • Jeg finner iteratorer i Python mer konsis. Du kan bruke for jeg i noe , og det fungerer med stort sett alt. Ja, Java har blitt bedre siden 1.5, men for eksempel kan du iterere gjennom en streng i python med samme konstruksjon.
  • Introspeksjon: I python kan du få ved runtime informasjon om et objekt eller en modul om sine symboler, metoder, eller sågar sine docstrings. Du kan også instantiate dem dynamisk. Java har noe av dette, men vanligvis i Java tar det en halv side med kode for å få en forekomst av en klasse, mens i Python er det ca 3 linjer. Og så vidt jeg vet docstrings ting er ikke tilgjengelig i Java
Svarte 09/09/2008 kl. 10:11
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more