Inleiding Python

Uit De Vliegende Brigade
(Doorverwezen vanaf Python)
Ga naar: navigatie, zoeken

Beschrijving & keuze

Rond 2018 had ik behoefte aan een general purpose programmeertaal, om verder te gaan waar SQL voor mij ophoudt. Ik gebruikte Bash al redelijk veel, maar ook dat heeft z'n beperkingen. De keuze is gevallen op Python.

Relevante eigenschappen van Python

  • Linux: Geschikt voor Linux. Toevallig ook voor alle andere relevante platformen, maar dat speelt voor mij amper een rol
  • Open-source: Alle belangrijke programmeertalen ter wereld, zijn tegenwoordig open-source. Ik zou heel diep moeten nadenken, voordat ik ooit nog een propriëtaire taal zou gebruiken
  • Veelzijdig: Python is van veel markten thuis. In beginsel programmeer ik veel in SQL, maar ik heb een additionele taal nodig voor de dingen waarvoor SQL niet bedoeld is. Daardoor kwam ik uit op talen zoals PHP, R, Perl en Bash. Er zijn een aanal redenen waarom Python voor mij de voorkeur heeft boven deze andere talen, en veelzijdigheid speelt een grote rol: Ik wil liever maar één additionele general-purpose taal leren. Vooral het contrast met PHP is groot. Voorbeelden:
    • Interactie met MySQL-databases waarbij MySQL-objecten ook nog eens als 'native' Python-objecten benaderd kunnen worden dankzij ORM's
    • Matrixalgebra - Python is vermoedelijk voor mij een prima vervanger van Matlab en heeft grote voordelen boven bv. R, Gnumatic en Octave
    • Statistiek, inclusief numerieke data-types met hoge significantie
    • Big data
    • Microcontrollers: Echt waar: [1]
  • Actueel: Waar PHP aan belang aan het inboeten is (begin 2019), neemt de relevantie van Python toe. Rond 2015 heeft Python Java gepasseerd als meest gebruikte programmeertaal [2]
  • Interpreted/bytecode/gecompileerd?: Ik geloof dat het standaard een geïnterpreteerde taal is, maar dat er altijd een JIT compiler naar byte-code gebruikt wordt. Dat schijnt geheel transparant te functioneren. Godzijdank: Niet wachten op een compiler. Ik denk dat je dit kunt merken, omdat een script niet wordt uitgevoerd als er een syntaxfout in zit. Geïnterpreteerde talen executeren meestal totdat ze die fout tegenkomen, maar Python executeert nix, als-ie zo'n fout tegenkomt
  • Leuke taal: Pyton is leuk om in te programmeren. Illustraties:
    • Geen verplicht karakter (zoals ; in SQL) om een commando te eindigen
    • Functionele gebruik van whitespace is handig
    • Het staat me bij dat bv. C, C++, Java of Perl, heel omslachtig werken (Perl mbt. API-toegang), maar misschien heb ik het niet lang genoeg geprobeerd. Visual Basic is propriëtair, platform-afhankelijk en een zooitje
    • PHP is inconsistent, rommelig, onhandig (bv. embedded SQL ipv. ORM's) en onveilig.

Overige kenmerken

Overige kenmerken, die handig zijn om te weten, maar voor mij minder van belang zijn:

  • Imperative: (itt. declaratief) [3]
  • Object-oriented: Volwaardig object-oriented, muv. data hiding (encapsulation)
  • Functioneel: Want functies en statements behouden geen state [4]. Dus ook geschikt voor lambda-calculus en recursie, zoals in Scheme of Algol
  • Procedureel [5].
  • High level: Dus eerder een scripttaal dan een low-level taal zoals C of assembler
  • Structured: Geen goto, maar subroutines + effectieve abstraction
  • White space: Meest opvallende kenmerk van Python: White space heeft een functie! Het wordt gebruikt voor nesting, waar andere programmeertalen bv. '{' en '}' gebruiken
  • Flexibel: Dit staat op gespannen voet met gestructureerd, maar ik denk dat ik er wel blij mee ben.

Executie van een Python-script

Specifiek met aanroep Python

python <bestandsnaam>

Als generiek executeerbaar bestand

  • Maak bestand uitvoerbaar: chmod +x <bestandsnaam>
  • Gebruik shebang op de eerste regel om aan te geven welke interpretator benodigd is: #!/ usr/bin/python voor Python 2.x en #!/ usr/bin/python3 voor Python 3.x. Bij deze aanpak heb je geen specifieke extentie nodig. Daar zorgt de shebang voor.

Met of zonder extentie?

De gebruikelijke extentie voor Python-scripts, is .py. Op Linux hoef je geen extentie te gebruiken, maar op Windows is het noodzakelijk. Wel of niet doen? → Boeit niet.

Interactief

In Bash beland je met het commando python in de interactive mode. Daarnaast kun je zien dat de historie (state?) wordt behouden: De interpreter heeft onthouden dat er een library is geladen - Super!
IDLE in interactieve actie op Linux Mint

Wikibooks » Python Programming » Interactive mode:

Python has two basic modes: script and interactive. The normal mode is the mode where the scripted and finished .py files are run in the Python interpreter. Interactive mode is a command line shell which gives immediate feedback for each statement, while running previously fed statements in active memory. As new lines are fed into the interpreter, the fed program is evaluated both in part and in whole.

Interactive mode is a good way to play around and try variations on syntax.

Terminal

On macOS or linux, open a terminal and simply type "python". On Windows, bring up the command prompt and type "py", or start an interactive Python session by selecting "Python (command line)", "IDLE", or similar program from the task bar / app menu. IDLE is a GUI which includes both an interactive mode and options to edit and run files.

Interactief na executie van een script

Je kunt vanuit de shell met de flag -i een script aanroepen en aansluitend in de interactive mode belanden. Dat schijnt handig te zijn voor bv. debuggen. Voorbeeld:

python -i MijnScript

IDLE

IDLE is een IDE inclusief een GUI voor interactive mode. Op Linux heb ik 'm geïnstalleerd middels sudo apt install idle. M'n eerste indruk is, dat Bash + Sublime voorlopig prima voldoen voor mij.

Hello, World!

Creëer bestand hello_world, zonder extentie, maar wel executeerbaar, met als inhoud:

#! /usr/bin/python

print("Hello, world!")

en roep dit aan vanuit een terminal.

Versie

Python kent twee actuele major versies: 2.x en 3.x. Tja, welke ga ik gebruiken?

Versie achterhalen

Hoe je je standaard versie kunt achterhalen vanuit een Python-script [6]:

import sys
print (sys.version)

En vanuit bash:

python -V

Let op: Dit zegt alleen welke versie van Python de standaard-versie is. Goede kans dat er nog een andere versie is geïnstalleerd.

Beide versies tegelijkertijd gebruiken?

Volgens [7] kun je prima beide versies installeren. Op Ubuntu heb je ze waarschijnlijk zelfs beiden. Kwestie van de juiste shebang toepassen in de eerste regel van een script. En dit blijkt inderdaad te werken:

#! /usr/bin/python

import sys
print (sys.version)

geeft

2.7.12 (default, Nov 12 2018, 14:36:49) 
[GCC 5.4.0 20160609]

en

#! /usr/bin/python3

import sys
print (sys.version)

geeft

3.5.2 (default, Nov 12 2018, 13:43:14) 
[GCC 5.4.0 20160609]

Op welke versie standaardiseer ik?

Python 2.x stamt uit 2008, dus het ligt voor de hand dat 3.x de juiste keuze is. Echter, een decennium later blijkt 2.x nog steeds relevant te zijn:

  • Half 2018: Op mijn laptop is 2.7 geïnstalleerd → Hierop standaardiseer ik
  • Jan. 2019: Nog steeds 2.7 op m'n laptop → 2.7
  • Jan. 2019: Ik blijk beide versies op m'n laptop te hebben + wisselen is gemakkelijk → 3.x

Modules & libraries

Zie https://docs.python.org/2/tutorial/modules.html - Weinig aan toe te voegen!

Zie ook

Bronnen

Wikibooks - Python Programming