2017-07-28 2 views
3

Ich mache Aufgaben auf py.checkio.org, ich habe eine Übung zu erfüllen, um meine eigene Funktion min() und max() zu schreiben.Parameter in Python integrierte Funktionen min() und sortiert()

ich Dokumentation zu dieser Funktion in official documentation gelesen haben und ich bin etwa beschriebenen Parameter überrascht, sehen sie aus wie: min(iterable, *[, key, default])

Ich frage mich, was diese Konstruktion macht *[, gemein, ist es seltsam, weil *args und **kwargs ist klar, auch [,arg] ist klar. Aber *[, ist sehr seltsam, was bedeutet dieser Parameter?

P.S. sorted() function hat seltsamen Parameter asterisk: sorted(... *, ...) was kann es bedeuten?

Antwort

3

Folgendes gilt Python 3 (auf die die OP verbunden sind).


Der einzelne Stern (*) in der Funktionsdefinition von sorted bezeichnet, dass alle nachfolgend genannten Parameter als Schlüsselwort Argumente zugeführt werden muss ("keyword-only Argumente" siehe PEP 3102). Das bedeutet, dass das Folgende nicht:

>>> sorted([1, 2, 3], lambda x: x) 
[...] 
TypeError: must use keyword argument for key function 

Statt Sie müssen diese Parameter über Keyword-Argumente liefern:

>>> sorted([1, 2, 3], key=lambda x: x) 
[1, 2, 3] 

Ich bin mir nicht ganz sicher, was die , *[, key, default] Syntax bezeichnen soll (es ist kein gültiges Python, sondern ein Dokumentationszweck), aber ich denke, dass die Entwickler das Gleiche zum Ausdruck bringen wollen, nämlich dass Sie diese Parameter als Schlüsselwortargumente angeben müssen (weil min a nd max kann eine beliebige Anzahl von Positionsargumenten annehmen, das ist die einzige Möglichkeit, dies zu tun.

+0

Ich sollte wirklich anfangen und lernen Python 3 xD –

+0

@OP: das ist die richtige Antwort natürlich. Redigiert meins. –

+0

danke, ich suchte den Weg, wie kann ich dies google *, Verhalten, und steckte. Vielen Dank für die Erklärung. –

3

Der Teil [, key, default] ist nicht Python-Syntax, es ist allgemeine Programmiersprachen Grammatik-Syntax bezeichnet optionale Teile (hier optionale Argumente).

EDIT: die * Teil in a_guest Antwort erklärt (nb: dies ist für Python 3 nur)

Verwandte Themen