Léiert Python Control Flow a Loops fir Shell Scripten ze schreiwen an ofzestëmmen - Deel 2


Am viregten Artikel vun dëser Python Serie hu mir eng kuerz Aféierung zum Python gedeelt, seng Kommandozeil Shell, an d'IDLE. Mir hunn och bewisen wéi een arithmetesch Berechnungen ausféiert, wéi een Wäerter a Variablen späichert a wéi een dës Wäerter op den Ecran zréckdréckt. Schlussendlech hu mir d'Konzepter vu Methoden an Eegeschaften am Kontext vun Objektorientéierter Programméierung duerch e praktescht Beispill erkläert.

An dësem Guide wäerte mir d'Kontrollfloss diskutéieren (fir verschidde Handlungskursen ze wielen ofhängeg vun der Informatioun, déi vun engem Benotzer aginn ass, d'Resultat vun enger Berechnung oder den aktuelle Wäert vun enger Variabel) a Loops (fir repetitive Aufgaben ze automatiséieren) an dann gëllen wat mir hu bis elo geléiert en einfache Shell-Skript ze schreiwen, deen den Typ vum Betribssystem, den Hostnumm, d'Kernel-Verëffentlechung, d'Versioun an den Numm vum Maschinnhardware weist.

Dëst Beispill, obwuel Basis, hëlleft eis ze illustréieren wéi mir d'Fäegkeete vum Python OOP kënne profitéieren fir Shell-Skripte méi einfach ze schreiwen wéi regelméisseg Bash-Tools ze benotzen.

An anere Wierder, mir wëllen aus

# uname -snrvm

zu

oder

Gesäit schéin aus, oder? Loosst eis Är Ärmelen oprollen an et geschéien.

Kontroll Flux am Python

Wéi mir virdru gesot hunn, erlaabt d'Kontrollfloss eis verschidde Resultater ze wielen ofhängeg vun enger bestëmmter Konditioun. Seng einfachst Ëmsetzung am Python ass eng if/else Klausel.

D'Basis Syntax ass:

if condition:
    # action 1
else:
    # action 2

  1. Wann d'Konditioun op richteg evaluéiert gëtt, gëtt de Codeblock hei ënnen ausgefouert (vertrueden duerch # Aktioun 1. Soss gëtt de Code ënner anerem ausgeführt.
  2. Eng Bedingung kann all Ausso sinn, déi entweder richteg oder falsch evaluéiere kann. Zum Beispill:

1 < 3 # true
firstName == "Gabriel" # true for me, false for anyone not named Gabriel

  1. Am éischte Beispill hu mir zwee Wäerter verglach fir ze bestëmmen ob een méi grouss ass wéi deen aneren.
  2. Am zweete Beispill hu mir firstName (eng Variabel) verglach fir ze bestëmmen ob um aktuellen Ausféierungspunkt säi Wäert identesch ass wéi \Gabriel
  3. D'Konditioun an déi aner Ausso musse vun engem Colon (:) gefollegt ginn
  4. Indentatioun ass wichteg am Python. Zeilen mat identeschen Abriecher ginn als am selwechte Codeblock ugesinn.

Notéiert w.e.g. datt d'if/else Ausso nëmmen ee vun de ville Kontrollflow-Tools ass, déi am Python verfügbar sinn. Mir hunn et hei iwwerpréift well mir et spéider an eisem Skript benotzen. Dir kënnt méi iwwer de Rescht vun den Tools an den offiziellen Dokumenter léieren.

Loops am Python

Einfach gesot, eng Loop ass eng Sequenz vun Instruktiounen oder Aussoen déi an Uerdnung ausgefouert ginn soulaang eng Konditioun wouer ass, oder eemol pro Element an enger Lëscht.

Déi einfachst Loop am Python gëtt duergestallt duerch d'For Loop Iterates iwwer d'Elementer vun enger bestëmmter Lëscht oder String, déi mam éischten Element beginn an mam leschten ophalen.

Basis Syntax:

for x in example:
	# do this

Hei Beispill kann entweder eng Lëscht oder eng String sinn. Wann déi fréier, representéiert d'Variabel mam Numm x all Element an der Lëscht; wann déi lescht, x representéiert all Charakter an der String:

>>> rockBands = []
>>> rockBands.append("Roxette")
>>> rockBands.append("Guns N' Roses")
>>> rockBands.append("U2")
>>> for x in rockBands:
    	print(x)
or
>>> firstName = "Gabriel"
>>> for x in firstName:
    	print(x)

D'Ausgab vun den uewe genannte Beispiller gëtt am folgende Bild gewisen:

Python Moduler

Aus offensichtleche Grënn muss et e Wee sinn fir eng Sequenz vu Python-Instruktiounen an Aussoen an enger Datei ze späicheren déi opgeruff ka ginn wann et néideg ass.

Dat ass genee wat e Modul ass. Besonnesch bitt den OS Modul en Interface zum Basisdaten Betribssystem an erlaabt eis vill vun den Operatiounen auszeféieren déi mir normalerweis an enger Kommandozeilprompt maachen.

Als solch integréiert et verschidde Methoden an Eegeschaften déi kënne genannt ginn wéi mir am virege Artikel erkläert hunn. Wéi och ëmmer, mir mussen et an eiser Ëmwelt importéieren (oder enthalen) mam Import Schlësselwuert:

>>> import os

Loosst eis den aktuellen Aarbechtsverzeechnes drécken:

>>> os.getcwd()

Loosst eis elo all dëst zesummesetzen (zesumme mat de Konzepter, déi am virege Artikel diskutéiert goufen) fir de gewënschte Skript ze schreiwen.