1.2. Hvorfor bruge Python?

Hvorfor i al verden skulle man interessere sig for Python, når der i forvejen er en lang stribe af rigtig gode gamle og velfungerende computersprog at gå til? Lad mig som eksempler nævne:

  1. Python findes til alle de velkendte styresystemer herunder Linux, Mac og Windows.

  2. Python er let at flytte fra et styresystem til et andet som f.eks. fra Linux til Windows og omvendt.

  3. Er meget let at lære - også for begyndere indenfor brugen af computersprog i det hele taget.

  4. Python kombinerer bemærkelsesværdig styrke med en meget klar syntaks (læs: måde at gøre tingene på).

  5. I Python kan du lære objekt-orienteret programmering (programmering og anvendelse af vinduer, knapper og den slags) uden af forstå mange af de komplekse detaljer forinden. Senere kan du så om ønsket sætte dig ind i teknikken bag konstruktionen.

  6. Python er et begyndervenligt computersprog, der automatisk styrer mange af de komplekse detalier, der foregår bag scenen. Det gør det muligt for dig at bruge kræfterne på de overordnede ting i dit projekt uden at skulle grave i dybden for hvert eneste skridt. Lad os også her foregribe begivenhederne lidt og se følgende eksempel, der nok også kan interessere den erfarne Java, C++ eller Delphi programmør.

    >>> from Tkinter import Label
    >>> widget = Label()
    

    Egentlig burde der nok have været 1 programlinje mere i det viste eksempel. Den skulle i så fald hedde widget.pack() Funktionen pack() stiller objektets bestanddele på plads på udskriftsenheden (skærmen). Men i dette tilfælde er der ikke noget at stille på plads, så de 2 programlinjer er tilstrækkelige. Du kan lave nøjagtig samme vindue med:

    med Entry:

    >>> from Tkinter import Entry
    >>> barn = Entry()
    >>> barn.pack()
    
    eller med Text (og en lang række andre objekter):
    >>> from Tkinter import Text
    >>> barn = Text()
    >>> barn.pack()
    
    >>> from Tkinter import *
    >>> barn = Frame().pack(expand = YES, fill = BOTH)
    

    Læg allerede her mærke til forskellen på 2 ting. 1: Det du formentlig havde forventet from Tkinter import Frame er blevet til from Tkinter import * (her sker det for at kunne udnytte parameterværdierne i pack) og 2: funktionen barn.pack() er blevet flyttet til Frame() og har fået 2 parametre (argumenter). Det sker for at give Frame arvingen barn mulighed for at kunne udvides (sker med expand = YES) og det i både vandret og lodret retning eller med andre ord til at kunne udfylde hele skærmen. Frame objektet er en kontainer, hvori alle andre grafiske objekter som tekstbokse, knapper, labels og mange andre kan indsættes. Dem er der jo ingen af i eksemplet her, så Frame().pack(expand = YES, fill = BOTH) virker helt på samme måde, som når du klikker på knappen længst til venstre i vinduets øverste højre hjørne. Den får vinduet til at klappe sammen til dets mindst mulige størrelse. expand = YES giver rammen (the frame - kontaineren) mulighed for at kunne udvides efter behov, men her der ikke behov (der skal ikke sættes andre komponenter ind i kontaineren). Hvis der senere sættes et eller flere af den nævnte og tilsvarende objekter ind i rammen (the Frame), vil den blive udvidet efter behov lige så længe der er plads til objekterne i det givne skærmareal. Er der ikke det, vil objekterne ganske enkelt ikke blive viste.

    Figur 1-2. Eksempel på vinduer

    Naturligvis har de to vinduer nøjagtig de samme åbne/lukke muligheder m.v. som du kender dem fra f.eks. internet browsere i Windows. Det kan da kaldes objektorienteret programmering, så det forslår. Alle vinduer, knapper og andre normale objekter er forprogrammerede, så du direkte kan bruge dem og selvfølgelig tilpasse dem efter dit behov i det givne øjeblik. I C++ skal du skrive masser af programlinjer for at opnå det tilsvarende. Det er i øvrigt meget let at integrere Python og C++ i hinanden.

    Noget af det fornemmeste ved OOP (objekt orienteret programmering) er genbrugen. Med de tre viste eksempler har du allerede set, at Python har fremragende egenskaber også på dette område, for naturligvis kan koden til et fuld færdigt vindue umuligt samles og udføres i de 2-3 programlinjer, det enkelte eksempel indeholder. Der skal mange gange så megen koden til. Hvis ikke Python besad evnen til genbrug, så skulle det meget store program, der skal til for at oprette det fuldt færdige vindue udvikles hver eneste gang, vinduet skulle bruges - altså 3 gange alene til de viste eksempler. Det ville blive kæmpeprogrammer, der i virkeligheden ville være næsten uanvendelige grundet det enorme omfang. Koden til det viste eksempel og til en række andre er indeholdt i Widget klassen. Label, Entry, Text og Frame er alle subklasser i Widget.

  7. Python er rygraden i Jython. Det betyder, at en større eller mindre del at et Jython program er og fortsat vil være Python. I Jython er det ofte lettere at udvikle eksempelvis Java applets end det er i selve Java. Applets kan bruges som integrerede dele af HTML, XHTML, XML sprogene til hjemmesider.

  8. I Linux taler man ofte om hele programpakken med de førnævnte programpakker som Linux. Det er forkert. Linux er kernen (centralenheden/det styrende program. I Python er der også en kerne. Den er lille, hvilket den også bør være. Til denne styrende enhed er der et meget stort bibliotek (library). Det betyder, at meget af det, du får brug for, allerede er udviklet og testet for dig. Din opgave vil være at skrive den kode, der kombinerer nævnte biblioteks komponenter og udvikle nye egenskaber efterhånden som der bliver brug for det, men du kan i høj grad også selv udvide Python med dine egne funktioner (metoder), klasser, moduler m.v.