Kennwortargumente in Python (Kennwortargumente in Python), lesson, page 724636
https://www.purl.org/stefan_ram/pub/kennwortargumente_in_python (permalink) is the canonical URI of this page.
Stefan Ram
Python-Kurs

Kennwortargumente in Python 

»int«

Das Aufrufbare »int« (d.h., „das aufrufbare Objekt »int«“) kann mit zwei Argumenten aufgerufen, falls das erste Argument eine Zeichenfolge ist. Dann wird das zweite Argument als Basis interpretiert.

Auswertung
int( "20", 16 )
32

Im Zahlensystem zur Basis 16 hat die zweite Stelle von rechts den Stellenwert 16, daher bedeutet »20« dort 32.

Zur Verdeutlichung der Bedeutung kann das zweite Argument mit »base« etikettiert werden. (»base=16« ist an dieser Stelle keine  Bindungsanweisung.)

Auswertung
int( "20", base=16 )
32

Solch eine Etikettierung sollte ohne Leerzeichen um das Gleichheitszeichen geschrieben werden.

Konsolenprotokoll (vereinfacht)
help( int )
int(x, base=10)

Solch eine Etikettierung ist nicht bei allen Aufrufbaren (d.h., „aufrufbaren Objekten“) möglich. Insbesondere bei in C  geschriebenen Aufrufbaren ist sie oft nicht  möglich.

Solch ein Argument, das mit einem Parameternamen etikettiert ist, nennen wir auch Kennwortargument .

leapdays‹ – die Etikettierung von Positionsargumenten

Argumente, die normalerweise nicht durch ihre Etikettierung, sondern durch ihre Position angegeben werden (wie bisher im Kurs), bezeichnet man auch als Positionsargumente.

Positionsargumente können bei manchen Funktionen mit dem entsprechenden Parameternamen etikettiert werden. Nicht  möglich ist dies bei Funktionen, die nicht in Python  geschrieben wurden.

Auswertung (überarbeitet und übersetzt)

from calendar import leapdays

help( leapdays )

Kurzbeschreibung der Funktion "leapdays" des Moduls "calendar":

leapdays( y1, y2 )

Ergibt die Anzahl der Schaltjahre im Bereich zwischen y1,
einschließlich, und y2, außschließlich.

Hierbei ist y1 kleiner als oder gleich y2.

Auswertung
leapdays( y1=1900, y2=2000 )
24
leapdays( y2=2000, y1=1900 )
24
leapdays( 1900, 2000 )
24
leapdays( 2000, 1900 )
-24

Stilregel Es ist üblich, bei der Angabe gekennzeichneter Argumente keine  Leerzeichen um das Gleichheitszeichen »=« zu setzen.

Wenn in der Dokumentation „eingebaut“ (»built-in«) fehlt, wurde die Funktion in Python  programmiert. Dann können Kennwortargumente für alle Argumente verwendet werden.

Die Verwendung von Kennwortargumeten erhöht die Lesbarkeit (Verständlichkeit) des Quelltextes. Deswegen sollte diese Schreibweise besonders bei Aufrufen mit mehreren  Argumenten bevorzugt verwendet werden.

Der Schrägstrich »/«

Die Funktion ›sin‹ ist „eingebaut“ (»built-in«); sie wurde also in C  programmiert. Bei solchen Funktionen findet man oft reine Positionsparameter, die nicht  mit einem Etikett versehen werden können.

Ein Positionsargument  ist ein Argument ohne vorangestelltes Kennwort. Die Bedeutung von Positionsargumenten wird nur durch ihre die Position in der Argumentliste gegeben.

Ein Positionsparameter  ist ein Parameter, dessen Wert durch ein Positionsargument festgelegt werden kann.

Ein reiner Positionsparameter  ist ein Parameter, dessen Wert nur  durch ein Positionsargument festgelegt werden kann, aber nicht durch ein Kennwortargument.

Parameter, die in der Erklärung vor  einem Schrägstrich »/« stehen, können nicht  zur Kennzeichnung von Argumenten verwendet werden. Sie sind reine Positionsparameter.

Protokoll

from math import sin

help( sin )

Help on built-in function sin in module math:

sin(x, /)

Return the sine of x (measured in radians).

sin( x=2 )
TypeError: sin() takes no keyword arguments

In einem Aufruf, in dem sowohl Positionsargumente als auch Kennwortargumente angegeben werden sollen, sind zuerst alle Positionsargumente anzugeben und danach alle Kennwortargumente. (Unbeschadet der Möglichkeit, daß gewisse Argumente entfallen können.)

Die Kennzeichnung der Art von Parametern mit einem Schrägstrich  »/« wird seit Python 3.5  in die Dokumentation einiger Python -Versionen eingebaut. Sie ist jedoch nicht  bei allen Python -Implementationen zu finden und auch nicht  für alle Teile der Dokumentation umgesetzt. Wenn man also eine Funktionsdokumentation ohne  einen Schrägstrich sieht, so sagt dieses Fehlen  des Schrägstriches also nichts  darüber aus, welche Parameter der Funktion Positionsparameter und welche Kennwortparameter sind.

Der Schrägstrich »/« trennt die vor ihm stehenden reinen Positionsparameter von den ihm folgenden Kennwortparametern.

Reine Kennwortparameter (Optionen)

Es gibt auch reine  Kennwortargumente, die mit einem Kennwort angegeben werden müssen. Sie finden sich in der Dokumentation hinter  solche Parametern, zu denen keine bestimmte Zahl von Argumenten gehört, die für alle Aufrufe gleich ist – also beispielsweise hinter Parametern, zu denen die Argumente auch entfallen oder wiederholt werden können. (Die reinen Kennwortparameter sind nicht  die mit einem Stern gekennzeichneten Parameter selber, sondern die dahinterstehenden !)

Beim aufrufbaren Objekt »(print)« sind beispielsweise ›sep‹ und ›endreine Kennwortparameter, da sie auf »« folgen. Das heißt, Werte für diese Parameter können nur  mit der Kennwortschreibweise angegeben werden.

Protokoll
help( print )
Help on built-in function print in module builtins:

print(...)
print(value, ..., sep=' ', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
flush: whether to forcibly flush the stream.

»sep=« – Trennung von Ausgaben einzelner Argumente

Das sep-Argument gibt an, wie die einzelnen Ausgaben mehrerer Positionsargumenten getrennt werden sollen. Voreingestellt ist dafür ein Leerzeichen » «.

Protokoll
print( 'a', 1, True, None, -56 )
a 1 True None -56
Protokoll
print( 'a', 1, True, None, -56, sep=', ' )
a, 1, True, None, -56
Protokoll
print( 'a', 1, True, None, -56, sep='\n' )
a
1
True
None
-56

Der Fehlwert von »sep« ist «' '» (Leerzeichen).

Protokoll
print( 2, 2 )
2 2

Übungsfragen ⃖

Bei der Beantwortung der folgenden Übungsfragen soll in der Antwort jedes  ausgegebene Zeichen einzeln genannt werden.

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die Ausführung der folgenden Anweisung?

Anweisung
print()

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die Ausführung der folgenden Anweisung?

Anweisung
print( ' ' )

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die Ausführung der folgenden Anweisung?

Anweisung
print( sep=',' )

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die Ausführung der folgenden Anweisung?

Anweisung
print( ' ', sep=',' )

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die Ausführung der folgenden Anweisung?

Anweisung
print( ',',',', sep=',' )

About this page, Impressum  |   Form for messages to the publisher regarding this page  |   "ram@zedat.fu-berlin.de" (without the quotation marks) is the email address of Stefan Ram.   |   A link to the start page of Stefan Ram appears at the top of this page behind the text "Stefan Ram".)  |   Copyright 1998-2020 Stefan Ram, Berlin. All rights reserved. This page is a publication by Stefan Ram. relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724636 stefan_ram:724636 Kennwortargumente in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724636, slrprddef724636, PbclevtugFgrsnaEnz Explanation, description, info, information, note,

Copyright 1998-2020 Stefan Ram, Berlin. All rights reserved. This page is a publication by Stefan Ram.
https://www.purl.org/stefan_ram/pub/kennwortargumente_in_python