Ich werde Rory ein bisschen hier huckepack.
None
ist ein Wert, während pass
eine Aussage ist.
Zum Beispiel, wenn Sie einen Standardwert für eine Funktion wünschen würden Sie
tun
def my_func(val1, val2=None):
# Some stuff here
Wo None
verwendet wird, um anzuzeigen, dass der Standardwert von val2
Keine ist.
Wenn Sie eine Klasse haben, jedoch können Sie pass
auf diese Weise sehen:
class MyClass(object):
def __init__(self):
pass
Wo pass
kann es sein, weil Sie später die __init__
Methode definieren möchten, oder um anzuzeigen, dass es tut nichts für die Klasse.
Wie auch immer, pass
ist zu sagen, "Ich könnte hier etwas tun, aber ich bevorzuge es nicht". Und None
ist ein Ist-Wert, die Sie explizit zu sagen bedeutet „Ja, ich gebe diesen Wert None
EDIT:.
Ich verstehe mehr von der Verwirrung jetzt
Da sehen Sie, dass:
class MyClass(object):
def __init__(self):
pass
als
geschrieben werden konnte
class MyClass(object):
def __init__(self):
None
Dies ist nicht Pythons Art zu sagen, dass None
entspricht pass
hier. Es wird einfach gesagt, dass die Bereitstellung nur eines value
als No-Op, den gleichen Effekt haben wird.Das heißt also, dass ich auch tun:
class MyClass(object):
def __init__(self):
12
Und dies natürlich nicht sinnvoll ist, warum sollten Sie jemals 12
dort setzen? Der Punkt hier ist, dass die Effekte die gleichen sind, aber die Bedeutungen sind in diesem Fall unterschiedlich. Und in vielen Fällen None
und pass
sind nicht austauschbar wie Standardargumente
Es kann wohl argumentiert werden, dass das Setzen des Wertes 'None' auf einer einzelnen Zeile ist verwirrender als die Einführung einer neuen Anweisung (' pass'). –
Ja, es wäre eine weitere Konvention zu lernen. Aber in Python denke ich, dass der Trend (zu Recht) darin besteht, dem Programmierer mehr Freiheit zu geben, im Austausch dafür, dass er eine angemessene Menge von Konventionen lernt und befolgt. –
Nun, da wir keine Klammern haben, um leere Körper von etwas zu bezeichnen, musste eine Art No-Op-Anweisung enthalten sein. Warum "pass" und nicht irgendein anderes Wort, denke ich, dass es hauptsächlich auf Meinungen basiert. –