Aufrufe mit mehreren Argumenten in Python (Aufrufe mit mehreren Argumenten in Python), Lektion, Seite 723906
https://www.purl.org/stefan_ram/pub/mehrere_argumente_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Aufrufe mit mehreren  Argumenten in Python 

Einführende Beispiele

Wir haben schon binäre Operatoren  kennengelernt.

Auswertung
12 + 7
19

Eine Anwendung eines binären Operators hat zwei  Operanden.

Auch Aufrufe können mehrere  Argumente (hier: zwei Argumente) haben.

Protokoll

from operator import add

add( 12, 7 )

19

Syntax

Mehrere Argumente werden innerhalb eines Aufrufs jeweils durch ein Komma »,« voneinander getrennt.

Syntax
Aufruf                             .---------------------------.
.-----------------. .-. | .----------. v .-.
--->| Primaerausdruck |--->( ( )---'---.--->| Ausdruck |---.---'--->( ) )--->
'-----------------' '-' ^ '----------' | '-'
| .-. |
'--------( , )------'
'-'

Anforderungen

Der Wert des Primärausdrucks muß ein aufrufbares Objekt sein, das den Aufruf mit der verwendeten Anzahl von Ausdrücken in den Klammern gestattet.

Semantik

Bei der Auswertung eines Aufrufs werden der Primärausdruck  und die Ausdrücke  des Aufrufes in der Reihenfolge vom Anfang des Ausdrucks bis zu seinem Ende ausgewertet (die Reihenfolge, in der dies geschieht, wird von The Python Language Reference, Release 3.7.0a1, 6.15 festgelegt). Die Auswertung des Primärausdrucks ergibt ein aufrufbares Objekt, und die Auswertung der Ausdrücke ergibt Objekte. Alsdann wird eine Inkarnation  (Verbindung) des aufrufbaren Objekts mit den Objekten hergestellt und gestartet. Diese legt dann den Wert des Aufrufes  fest.

Anmerkungen

Dokumentation

Die Dokumentation vermittelt eine Information über mehrere Argumente durch entsprechend viele Parameter.

Protokoll (Python  3.7.0 Vorversion)

from operator import add

help( add )

Help on built-in function add in module _operator:

add(...)

add(a, b) -- Same as a + b.

Protokoll (Python  3.7.0)

from operator import add

help( add )

Help on built-in function add in module _operator:

add(a, b, /)

Same as a + b.

»signature« ⃗

Das Ergebnis von »signature« läßt die Anzahl der Argumente ebenfalls erkennen.

Protokoll

from operator import add

from inspect import signature

signature( add )

<Signature (a, b, /)>

Das Wort „Prälat“ ⃗

Das Wort „Prälat“ (mittelhochdeutsch prēlāt(e) < mittellateinisch praelatus, = der Vorgezogene), welches in diesem Kurs für den Ausdruck ganz am Anfang eines Aufrufs verwendet wird, kommt daher, daß der Operator bei der Schreibweise mit einem Prälaten sozusagen ganz „nach vorne gezogen“ wird.

Nachvorneziehen des Prälaten

12 + 7

|
.-----'
|
v

add( 12 , 7 )

Begriffe ⃗

Ein einstelliges  aufrufbares Objekt ist ein aufrufbares Objekt, das mit einem  Argument aufgerufen werden kann; ein zweistelliges  (binäres ) aufrufbares Objekt ist ein aufrufbares Objekts, das mit zwei  Argument aufgerufen werden kann; und so weiter.

Beispiel Ermittlung des Minimums

Das folgende Beispielprogramm ermittelt das Minimum  zweier eingegebener Zahlen.

Auswertung
min( int( input() ), int( input() ))

2

-2

-2

Mehrere print-Argumente

Ein print-Aufruf kann mehr als ein  Argument haben. Mehrere Argumente werden durch ein Leerzeichen  » « getrennt ausgegeben.

Protokoll
print( 'abc', 'def' )
abc def
Protokoll
print( 'a', 1, True, None, -56 )
a 1 True None -56

Ellipsen »...« in der Dokumentation

Protokoll (überarbeitet, vereinfacht, gekürzt)
help( print )
print( value, ... )

In der Dokumentation deuten drei Punkt »...« an, daß für den voranstehenden Parameter mehrere Argumente  angegeben werden können.

Die Dokumentation der Funktion »print« enthält beispielsweise »value, ...«. Das bedeutet, daß an dieser Stelle wiederholt  ein Wert (»value«) angegeben werden kann.

Im Aufruf »print( 'abc', 'def' )« sind »'abc'« und »'def'« also jeweils Argumente für den Parameter »value«.

Weitere Beispiele ⃗

mul‹ ⃗

Das Objekt ›mul‹ entspricht dem Multiplikationsoperator »*«.

Protokoll

from operator import mul

mul( '2', 4 )

'2222'
mul( 2, 4 )
8
mul( 2.0, 4.0 )
8.0

isinstance‹ ⃗

Das Objekt ›isinstance‹ ergibt bei einem Aufruf, ob der Wert des ersten Arguments verwendet werden darf, wenn ein Objekt mit dem Typ erwartet wird, der durch das zweite Argument repräsentiert wird.

Ein Objekt ist ein Exemplar eines anderen Objektes, wenn das andere Objekt der Typ  des ersten Objekts ist.

Protokoll
isinstance( True, bool )
True

Ein Objekt ist aber auch ein Exemplar eines anderen Objektes, wenn das andere Objekt ein Obertyp  des Typs des ersten Objekts ist.

Protokoll
isinstance( True, int )
True

Die Antwort bestätigt noch einmal, daß bool-Objekte auch als int-Objekte verwendet werden können, also daß der Typ »bool« ein Untertyp  des Typs »int« ist.

Gleichheitszeichen und eckige Klammern in der Dokumentation

Ein Fehlwert  eines Parameters ist ein Wert, der als Argumentwert angenommen wird, wenn für jenen Parameter kein  Argumentausdruck angegeben wird.

Optionale Argumente werden in der Dokumentation  durch Angaben eines Fehlwertes, der mit einem Gleichheitszeichen  »=« hinter dem Parameternamen angegeben wird, oder durch Einschließen des zugehörigen Parameters in eckige Klammern »[« »]« oder durch beides gekennzeichnet.

Im Falle der Dokumentation der Funktion »log« aus dem Modul »math« wird dem Parameter »base« beispielsweise der Fehlwert »math.e« zugeordnet. Daran kann man erkennen, daß das Argument für jenen Parameter optional ist.

Dokumentation der Funktion »log« aus dem Modul »math« (Stand 2018)
log(x, [base=math.e])

signature« liefert für die in C  geschriebene Funktion »log« keine Ausgabe).

Im Falle des Beispiels der Funktion »log« aus dem Modul »math« ist der Fehlwert der Wert des Namens »e« aus dem Modul »math«, welcher in der Dokumentation als »math.e« geschrieben wird.

Protokoll

from math import log

from math import e

log( e * e, e )

2.0
log( e * e )
2.0
log( 3 * 3 * 3 * 3, 3 )
4.0

Übungsfragen ⃖

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die letzte Zeile der folgende Konsoleneingabe?

Konsoleneingabe

x = 2

print( 'x =', x )

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die letzte Zeile der folgende Konsoleneingabe?

Konsoleneingabe

x = 2

print( 'x =', 'x' )

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die folgende Konsoleneingabe?

Konsoleneingabe
x = int( 5 )

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die folgende Konsoleneingabe?

Konsoleneingabe
x = print( 5 )

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die zweite Anweisung der folgenden Konsoleneingabe?

Konsoleneingabe

x = int( 5 )

print( 'x =', x )

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die zweite Anweisung der folgenden Konsoleneingabe?

Konsoleneingabe

x = print( 5 )

print( 'x =', x )

Übungsaufgaben

Zur Lösung von Übungsaufgaben dürfen ab jetzt immer alle vordefinierten Namen verwendet werden, wenn dies in der Aufgabenstellung nicht anders gesagt wird.

Hinweis für den Dozenten  ► winsound folgt

/   Übungsaufgabe

Schreiben Sie einen from-Import und Aufruf derjenigen Funktion aus dem Modul »math«, deren Dokumentation im folgenden wiedergegeben ist.

Dokumentation (frei übersetzt und überarbeitet)
pow( x, y, / )
Ergibt die Potenz „x hoch y“.

Diese Aufgabe gilt als richtig gelöst, wenn der geschriebene Aufruf der Funktion von einer Python -Implementation ohne Fehlermeldung ausgewertet werden kann.

/   Übungsaufgabe

Schreiben Sie einen from-Import und Aufruf derjenigen Funktion aus dem Modul »operator«, deren Dokumentation im folgenden wiedergegeben ist.

Dokumentation (frei übersetzt und überarbeitet)
mul( x, y, / )
Ergibt das Produkt »x * y«.

Diese Aufgabe gilt als richtig gelöst, wenn der geschriebene Aufruf der Funktion von einer Python -Implementation ohne Fehlermeldung ausgewertet werden kann.

/   Übungsaufgabe

Schreiben Sie einen from-Import und Aufruf derjenigen Funktion aus dem Modul »math«, deren Dokumentation im folgenden wiedergegeben ist. Verwenden Sie möglichst Argumentwerte, bei denen Sie das Ergebnis im Kopf überprüfen können.

Dokumentation (frei übersetzt und überarbeitet)
hypot( x, y, / )
Ergibt die Euklidsche Norm √(x²+y²); dies ist die Länge der Strecke vom Ursprung zum Punkt (x, y).

Diese Aufgabe gilt als richtig gelöst, wenn der geschriebene Aufruf der Funktion von einer Python -Implementation ohne Fehlermeldung ausgewertet werden kann.

/   Übungsaufgabe ⃖

Versuchen Sie, mit dem Modul »winsound« einen Ton auszugeben (falls Sie unter Windows  arbeiten).

Klangausgabe unter Macintosh 

Verschiedene Module, wie beispielsweise »PyGame« erlauben Klangausgabe auf dem Macintosh. Sie müssen allerdings extra installiert werden.

Die Funktion ›prmonth‹ ⃗

Die Funktion ›prmonth‹ ist ein weiteres Beispiel eines reinen Wirkfunktors.

Ein „reiner Wirkfunktor“ ist ein aufrufbares Objekt, dessen Aufruf keinen Wert  hat, sondern nur eine Änderung bewirkt  hat.
Protokoll

from calendar import prmonth

prmonth( 2038, 1 )

    January 2038
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
x = prmonth( 2038, 1 )
    January 2038
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
print( x )
None

Hingegen ist ›month‹ ein reiner Wertfunktor.

Protokoll

from calendar import month

x = month( 2038, 1 )

print( x )

January 2038

Mo Tu We Th Fr Sa Su

1 2 3

4 5 6 7 8 9 10

11 12 13 14 15 16 17

18 19 20 21 22 23 24

25 26 27 28 29 30 31

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 stefanram723906 stefan_ram:723906 Aufrufe mit mehreren Argumenten in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723906, slrprddef723906, 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/mehrere_argumente_python