Aufrufe in Python (Aufrufe in Python), Lektion, Seite 723901
https://www.purl.org/stefan_ram/pub/aufrufe_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Aufrufe in Python 

Eine bestimmte, sehr universelle, Form eines Ausdrucks ist der Aufruf.

Einleitendes Beispiel

In einer Python -Implementation gibt es vordefinierte Programme zur Festlegung des Wertes von Ausdrücken, wie beispielsweise das Programm ›dir‹.

Auswertung
dir
<built-in function dir>

Die Textdarstellung des Objekts ›dir‹ lautet »<built-in function dir>« damit wird gesagt:

Bei der Auswertung des Ausdrucks »dir()« wird das Programm ›dir‹ gestartet, um den Wert des Ausdrucks festzulegen. ›dir‹ legt ein Namensverzeichnis »['__annotations__', « als Wert des Aufrufausdrucks »dir()« fest. Eine Textdarstellung jenes Namensverzeichnisses erscheint dann in der Konsole.

Auswertung
dir()
['__annotations__',

Nach einem Import zeigt »dir()« beispielsweise zusätzlich auch noch die importierten Namen an:

Protokoll

from string import digits

dir()

[  , 'digits' ]

Syntax

Ein Aufruf  ist ein Ausdruck, dem eine runde Klammer auf »(« und dann eine runde Klammer zu »)« folgt.

Syntax (vereinfacht)
Aufruf
.----------. .-. .-.
--->| Ausdruck |--->( ( )--->( ) )--->
'----------' '-' '-'

Entsprechend nennt man die Klammern »()« auch den Aufrufoperator.

Den Ausdruck, der in einem Aufruf ganz vorne steht, nennen wir auch einen Prälaten  (mittelhochdeutsch prēlāt(e) < mittellateinisch praelatus, = der Vorgezogene, weil jener Ausdruck im Aufruf ganz vorne  steht. English: prelate  /ˈprɛlɪt/).)

Syntax (vereinfacht)
Aufruf
.----------. .-. .-.
--->| Ausdruck |--->( ( )--->( ) )--->
'----------' '-' '-'
Praelat

Korrekte Syntax

Wie ein Atom kann ein Aufruf überall eingesetzt werden, ohne eingeklammert werden zu müssen. Solche Ausdrück werden als Primärausdrücke  bezeichnet. Die Priorität der nachgestellten Klammern ist höher als die aller anderen Operatoren. Wir korrigieren die eingangs vorgestellte vereinfachte Syntax nun dahingehend, daß eine Aufruf mit einem Primärausdruck beginnt.

Syntax

Primaerausdruck

.--------.
---.--->| Atom |---.--->
| '--------' |
| .--------. |
'--->| Aufruf |---'
'--------'

Aufruf
.-----------------. .-. .-.
--->| Primaerausdruck |--->( ( )--->( ) )--->
'-----------------' '-' '-'

Potenz

.-------------------------------------.
| |
.-----------------. | .--. .------------------. v
--->| Primaerausdruck |---'--->( ** )--->| unaerer Ausdruck |---'--->
'-----------------' '--' '------------------'

Die häufigste grammatische Kategorie eines Prälaten ist wahrscheinlich „Name“, da oft ein Name  als Prälat verwendet wird, wie etwa in »dir()«.

Aussprache

Eine mögliche Aussprache von »dir()« ist „dir-Aufruf “.

Anforderungen

Der Ausdruck, der sich in einem Aufruf vor den Klammern befindet, muß ein Objekt als Wert haben, das speziell für die Verwendung in einem solchen Aufruf vorgesehen ist. Solch ein Objekt wird aufrufbares Objekt  genannt. Der Aufruf wird auch als „Aufruf des aufrufbaren Objekts“ bezeichnet.

Ein aufrufbares Objekt bezeichnete man in den 90er Jahren in der Programmiersprache C++  auch kurz als einen Funktor. Im weiteren Verlaufe des Kurses wird in diesem Kurs die Formulierung „aufrufbares Objekt“ jedoch gegenüber „Funktor“ bevorzugt werden. Wir werden „Funktor“ jedoch verwenden, wenn eine Bezeichnung aufrufbarer Objekte durch ein einzelnes Wort vorteilhaft ist. Falls keine Mißverständnisse möglich sind, wird ein aufrufbares Objekte manchmal auch nur kurz als „Objekt“ bezeichnet, wenn aus dem Zusammenhang schon hervorgeht, daß es sich um ein aufrufbares  Objekt handelt.

Semantik

Ein aufrufbares Objekt repräsentiert ein Programm.

Bei der Auswertung eines Aufrufs eines aufrufbaren Objekts, wird das zu jenem Objekt gehörende Programm gestartet und kann dann den Wert des Aufrufes festlegen.

Die Auswertung eines Aufrufausdrucks bezeichnet man auch als Aufrufvorgang  und sagt, daß dabei das aufrufbare Objekt aufgerufen  werde. Der Aufrufvorgang wird auch kurz als „Aufruf“ bezeichnet, wenn dabei keine Verwechslungen mit dem Aufruf im Sinne des Aufrufausdrucks möglich sind oder diese Unterscheidung im Einzelfall nicht nötig ist.

Den Wert des Aufrufs eines Objektes nennen wir auch das Ergebnis des Aufrufs. Man sagt auch, daß der Wert des Aufrufs vom Aufruf geliefert  werde.

Erkennung aufrufbarer Objeke

Wenn ein Aufruf ausgewertet wird, dessen Ausdruck kein aufrufbares Objekt als Wert hat, erscheint eine Fehlermeldung wie »object is not callable« („Objekt ist nicht aufrufbar“). Erscheint keine solche Fehlermeldung, ist das Objekt also aufrufbar.

Protokoll (frei übersetzt)
"a"()
Typefehler: Ein str-Objekt ist grundsaetzlich nicht aufrufbar!

Aber auch bestimmte Namen  stehen für nicht -aufrufbare Objekte.

Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
__name__
'__main__'
Protokoll (gekürzt, frei übersetzt und verändert)
__name__()
Typefehler: Ein str-Objekt ist grundsaetzlich nicht aufrufbar!

Arten aufrufbarer Objekte

Es gibt verschiedene Arten aufrufbarer Objekte. Die Unterscheidung zwischen diesen verschiedenen Arten aufrufbarer Objekte ist für uns derzeit aber noch nicht wichtig. Trotzdem werden einige Beispiele vorgestellt, damit man die zugehörigen Begriffe kennenlernt.

Funktionen

Das aufrufbare Objekt par excellence  ist die Funktion, da Funktionen Objekte sind, die speziell dafür gemacht sind, aufgerufen zu werden.

»dir« ist der Name einer Funktion.

Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes (übersetzt)
dir
<eingebaute Funktion dir>

(„Eingebaut“ bedeutet hier, daß die Funktion in C  geschrieben wurde.)

Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
dir()
['__annotations__',

Funktionen sind aufrufbare Objekte.

Neben den Funktionen gibt es noch andere aufrufbare Objekte.

Klassen

str‹ ist ebenfalls aufrufbar, aber eine Klasse (und keine Funktion).

Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
str()
''
Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
str
<class 'str'>

Nicht  alle Klassen sind aufrufbar.

Abkürzungen

An Stelle komplizierter Formulierungen wie „Die Auswertung eines Aufrufs des aufrufbaren Objektes ›dir‹ ergibt ein Namensverzeichnis.“ verwendet man oft Kurzformulierungen wie „Ein Aufruf von ›dir‹ ergibt ein Namensverzeichnis.“ oder gar „›dir‹ ergibt ein Namensverzeichnis.“, wenn dadurch keine Mißverständnisse ausgelöst werden können.

Standardobjekte

Wir hatten Namen, die von Anfang an vordefiniert sind, als Standardnamen  bezeichnet.

Entsprechenden nennen wir von Anfang an vorhandene Objekte oder Funktionen, Standardobjekte  und Standardfunktionen.

Dies sind Objekte oder Funktionen, die von der Standardbibliothek  definiert werden.

Übungsfragen

?   Aussprache

Wie würden Sie die beiden folgenden Ausdrücke jeweils aussprechen?

Ausdruck
dir
Ausdruck
dir()

?   Übungsfrage

Welcher der folgenden Ausdrücke ist ein Aufruf?

Syntax eines Aufrufs (vereinfacht)
Aufruf
.----------. .-. .-.
--->| Ausdruck |--->( ( )--->( ) )--->
'----------' '-' '-'

Übungsaufgaben

/   Übungsaufgabe

Schreiben Sie einen Aufruf des Objekts »help«.

(Das Verlassen des help-Modus ist durch Eingabe einer Leerzeile oder durch Eingabe von »quit« möglich.)

/   Übungsaufgabe

Schreiben Sie einen Aufruf des Objekts »int«.

Syntax ⃗

Syntax

Atom

.--------------------------.
---.------------>| Literal |------------.--->
| '--------------------------' |
| .--------------------------. |
'------------>| Name |------------'
| '--------------------------' |
| .-. .--------------------------. .-. |
'--->( ( )--->| Ausdruck |--->( ) )---'
'-' '--------------------------' '-'

Aufruf
.-----------------. .-. .-.
--->| Primaerausdruck |--->( ( )--->( ) )--->
'-----------------' '-' '-'

Primaerausdruck

.--------.
---.--->| Atom |---.--->
| '--------' |
| .--------. |
'--->| Aufruf |---'
'--------'

Potenz

.-------------------------------------.
| |
.-----------------. | .--. .------------------. v
--->| Primaerausdruck |---'--->( ** )--->| unaerer Ausdruck |---'--->
'-----------------' '--' '------------------'

unaerer Ausdruck

.------------------.
--->.------------>| Potenz |----.---->
| '------------------' ^
| .-. .------------------. |
'--->( - )--->| unaerer Ausdruck |----'
| '-' '------------------' |
| .-. .------------------. |
'--->( + )--->| unaerer Ausdruck |----'
'-' '------------------'

multiplikativer Ausdruck

.--------------------------.
--->.--->| unaerer Ausdruck |-------------------------------------.---->
| '--------------------------' ^
| .--------------------------. .-. .------------------. |
'--->| multiplikativer Ausdruck |--->( * )--->| unaerer Ausdruck |----'
| '--------------------------' '-' '------------------' |
| .--------------------------. .-. .------------------. |
'--->| multiplikativer Ausdruck |--->( / )--->| unaerer Ausdruck |----'
'--------------------------' '-' '------------------'

additiver Ausdruck

.--------------------------.
--->.--->| multiplikativer Ausdruck |---------------------------------------------.---->
| '--------------------------' ^
| .--------------------------. .-. .--------------------------. |
'--->| additiver Ausdruck |--->( + )--->| multiplikativer Ausdruck |----'
'--------------------------' '-' '--------------------------'

Ausdruck

.--------------------.
--->| additiver Ausdruck |--->
'--------------------'

Quelle zur Syntax von Aufrufen
The Python Language Reference, Release 3.7.0a1 6.3.4

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723901 stefan_ram:723901 Aufrufe in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723901, slrprddef723901, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/aufrufe_python