2017-12-15 5 views
0

Also, ich habe diese ziemlich einfache Funktion (ich bin ein Anfänger immer noch)."None" in Python

Und es geht so:

def add_num(x,y,z=None): 
    if z == None: 
     return x+y 
    else: 
     return x+y+z 

print(add_num(1,2)) 
print(add_num(1,2,3)) 

Also meine Frage ist, wenn ich feststellen, dass, wenn es keine dritte Variable ist, dann ist es akzeptiert. Also bedeutet "None" im Grunde genommen, dass es in Ordnung ist, keinen Wert an eine Variable angehängt zu haben, wenn "variable = None". Einfach bestätigen! Vielen Dank!

+0

Was meinen Sie mit "Ist es in Ordnung, keinen Wert an eine Variable angehängt zu haben"? –

+0

'None' ist ein Objekt vom Typ' NoneType'. Siehe https://docs.python.org/3/library/constants.html –

+0

jemand antwortete über die Verwendung von 'is None' anstelle von' == None'. Das ist üblich, aber nicht zwingend. Es ist nur so, dass "is" Objektidentitäten prüft, während equals bei gleicher Identität True ist, aber auch für Objektkopien. Aber da 'None' ein Singleton ist, kann man keine Kopie haben, es wird immer dasselbe Objekt sein, wenn True. – progmatico

Antwort

1

Try this:

def add_num(x,y,z='spatula'): 
    if z == 'spatula': 
     return x+y 
    else: 
     return x+y+z 

print(add_num(1,2)) 
print(add_num(1,2,3)) 

None üblich ist hier zu verwenden, aber es ist nicht intrinsische Argumente auf Standard.

5

Also bedeutet "None" im Grunde genommen, dass es in Ordnung ist, keinen Wert an eine Variable angehängt zu haben, wenn "variable = None". Einfach bestätigen! Vielen Dank!

Nr Wenn Sie eine Funktion wie folgt definieren:

def add_num(x,y,z=None): 

x und y sind "position" Argumente, und sie sind verpflichtet, während z ein Schlüsselwort ist Argument. Schlüsselwortargumente haben Standardwerte, die verwendet werden, wenn Sie beim Aufruf der Funktion keine angeben. Statt None, könnten Sie genauso gut geschrieben haben:

def add_num(x,y,z=0): 

Oder:

def add_num(x,y,z=5): 

Etc. In jedem Fall werden Sie einen Standardwert für z Einstellung, wenn es nicht in der Funktion zur Verfügung gestellt Anruf.

Beachten Sie, dass, wenn Sie mehrere Keyword-Argumente haben, wie folgt aus:

def do_something(x, y, size='medium', name=None): 

, dass man sie mit Werten als Positionsargumente liefern kann, wobei in diesem Fall die Argumente in der entsprechenden Reihenfolge sein müssen:

do_something(1,2, 'large', 'alice') 

Sie können aber auch Keyword-Argumente in beliebiger Reihenfolge angeben, indem Sie ihren Namen im Funktionsaufruf bereitstellt, wie folgt aus:

do_something(1, 2, name='alice', size='large) 

Und Sie brauchen keine Werte zur Verfügung zu stellen, wenn Sie mit dem Standard zufrieden sind:

do_something(1, 2, name='alice') 
+0

@ user2357112 danke für die Änderungen, aber wenn Sie das ausführlich bearbeiten werden, vielleicht nur eine neue Antwort posten. Oder ping mich einfach in den Kommentaren ... – larsks

+1

Okay, kommentieren. Standard-Parameterwerte und Schlüsselwortargumente sind völlig verschiedene Dinge, die zufällig eine sehr ähnliche Syntax haben. Standardmäßige Parameterwerte verhindern nicht, dass ein Parameter positionsmäßig bereitgestellt wird, und das Fehlen eines Standardwerts verhindert nicht, dass ein Parameter durch ein Schlüsselwortargument bereitgestellt wird. Die tatsächliche Syntax für einen Parameter, der durch ein Schlüsselwort bereitgestellt werden muss, sieht völlig anders aus. [Demo hier.] (Https://ideone.com/7j9qOr) – user2357112

+0

Sie können auch in den Sprachreferenzdokumenten für [Funktionsdefinitionen] (https://docs.python.org/3/reference/compound_stmts.html#) nachsehen. Funktionsdefinitionen) und [Aufrufe] (https://docs.python.org/3/reference/expressions.html#calls), dass sie niemals Standardwerte und Schlüsselwortargumente verwechseln - '=' repräsentiert immer einen Standardwert in einer Definition und ein Schlüsselwortargument in einem Aufruf. – user2357112

1

Ich sollte einen Blick auf die Python-Tutorial nehmen. Vor allem Default Argument Values

In diesem Kapitel wird erläutert, wie eine Funktion mit Standardargumenten definiert wird.

Die nächste ist über Schlüsselwort Argumente: Funktionen können auch mit Schlüsselwortargumenten der Form kwarg = Wert aufgerufen werden.

Es gibt zwei Arten von Argumenten:

Schlüsselwort Argument: ein Argument durch eine Kennung voran (z.B. name =) in einem Funktionsaufruf oder als ein Wert in einem Wörterbuch von ** vorangeben. Beispielsweise, 3 und 5 sind beide Schlüsselwort-Argumente in den folgenden Anrufe Komplex():

complex(real=3, imag=5) 
complex(**{'real': 3, 'imag': 5}) 

Positions Argument: ein Argument, das kein Schlüsselwort Argument ist. Positionsargumente können am Anfang einer Argumentliste erscheinen und/oder als Elemente eines Iterablen mit vorangestelltem * übergeben werden. Zum Beispiel, 3 und 5 sind beiden Positionsargumente in den folgenden Aufrufen:

complex(3, 5) 
complex(*(3, 5)) 

Argumente zu den genannten lokalen Variablen in einem Funktionskörper zugeordnet sind.

+1

Wolltest du sagen, dass * er * sich das Python Tuturial ansehen muss? – Barmar

Verwandte Themen