Python - Kontrolle für Null-Objekt

Ich bin neu in Python und ich verstehe nicht, wie das funktioniert. Ich möchte einen Wert zuweisen, der auf ein Objekt in Python, wenn es ist derzeit nicht definiert, aber wenn ich die if-Anweisung fehlschlägt, da das Objekt nicht definiert ist (Duh.).

Wie würde ich das beheben?

...
key = raw_input('What is your key?: ')

for i in key:
    print i
    if Count is None:
        Count = 0 

Traceback (most recent call last):
  File "Client.py", line 7, in <module>
    if Count is None:
NameError: name 'Count' is not defined

Was kann ich tun, um fix dieses scheinbar einfache Problem?

Den obigen code war Müll und das war etwas, was ich getestet und für das Verständnis der grundlegenden Python-Funktionalität. Es brachte mich zurück zu der Frage der Zuweisung eines Wertes zu einem Objekt, das ist eine Frage, die ich vorher hatte. Unten ist mein Gedankengang.

Ok, also offensichtlich bin ich nicht etwas erklären gut genug hier. Ich bin mir nicht sicher, was es ist, aber etwas ärgert mich darüber, dass Sie einen Wert zuweisen zu einem Objekt ist noch nicht relevant.
Zur besseren Lesbarkeit allein, ich möchte überprüfen, ob ein null-Wert für ein Objekt, bevor es in einer Anweisung verwendet werden. Von dem, was ich gelesen habe unten, es wird notwendig sein, und etwas, was ich bin wahrscheinlich nur zu haben, zu behandeln. In meinem Kopf, diese...

...
object = 'ObligatoryValue'

for i in Data
    Object = Data[0] # Now the object is relevant
    ...

sieht besser aus als diese...

...
for i in Data
    if Object is None:
        Object = Data[0] 
    ...

Noch weiter zu erklären, die denken, ich arbeite in der Daten-manipulation. Und das erste mal, ich lief in dieses Problem war, als ich zum Vergleich zweier Objekte. Wenn versucht, etwas zu tun, wie...

...
Object = Line[0]
if UndefinedObject == Object
    do = 'something'
...

Aber ich würde mir immer ein Fehler zurückgegeben, da die UndefinedObject wurde kein Wert zugeordnet.

  • Was ist Zählen ?
  • Das können Sie nicht. Abtretung definieren den Namen. Sie können überprüfen, ob eine Globale zugewiesen wurde, aber Sie in der Regel nicht. Was ist dein Anwendungsfall?
  • Sie können zuweisen None zu Count ersten; hinzufügen Count = None an der Spitze, aber es gibt litte Punkt, wirklich.
  • das Objekt ist, das würde ich gern überprüfen Sie den Wert. Ich würde gerne einen Wert zuweisen, wenn es nicht zuvor ein Wert zugewiesen.
  • Warum müssen Sie das tun? Warum nicht zuordnen, es zu beginnen?
  • Was wäre die beste Methode für diese Art der logischen progression?
  • Ich möchte nicht einen Wert zuweisen, der auf ein Objekt, bis es einen Eigenwert hat, das wäre in diesem Fall in der for-Anweisung.
  • Wenn das Objekt hat keinen inneren Wert, vor diesem Punkt, was ist da zu prüfen? Geben Sie einfach Count = 0 unbedingt in den loop. Wenn es nicht schon ein Wert an sich, sondern, dass intrinsische Wert "leer" ist, erstellen Sie es, bevor die Schleife mit dem Wert None wie in Martijn Antwort. In anderen Worten, die normale Python-code-Karten "hat einen Wert an sich" zu "ist eine variable".
  • Aber warum willst du nicht einen Wert zuweisen? Das ist das, was explizit zuweisen None ist für.
  • Bitte Lesen Sie Was ist das XY-problem. Es gibt offensichtlich einige Grund, warum Sie wollen, dies zu tun. Wenn wir wüssten, dass Grund, würde ich über die Quote von 1000:1 konnten wir erklären, um Ihnen eine bessere Weise, das gleiche zu tun.
  • Es ist etwas über Vorherige Zuordnung, die ich nicht mag. Es macht keinen Sinn für mich, dass ich würde haben einen Wert zuweisen, um das Objekt außerhalb der Erklärung, in der es noch Wert. Ich fasse meine Gedanken dazu in meinem ursprünglichen post.
  • Normalerweise werden Sie nicht haben, um einen Wert zuzuweisen, der außerhalb der Aussage. Sie brauchen nur zu tun hier, weil Sie wollen, zu prüfen, "null-Objekt", und das null-Objekt ist ein Wert, so ordnen Sie es so können Sie später überprüfen. Sie setzen diesen Anspruch an sich selbst, sehr wahrscheinlich, weil eine größere design-Auswahl in den code, den Sie sind tatsächlich versucht, zu schreiben.
  • Ich arbeite stark in der Daten/Datei-manipulation. Ein Interesse an der Programmierung sehe ich Teile meiner Daten-entry-position, die automatisiert werden können. Das erste mal, ich lief in dieses Problem war, als ich zum Vergleich zweier Objekte, aber ich konnte nicht die Anweisung return true false, weil das Objekt sei nicht definiert.
  • Wenn Sie "vergleicht zwei Objekte" die Objekte können nicht undefiniert sein. Es gibt keine Möglichkeit zu vergleichen, die ein nicht definiertes Objekt, oder irgendetwas anderes tun, die mit einem undefinierten Objekt, denn es ist kein Ausdruck in Python, das verweist auf ein nicht definiertes Objekt. Es gibt Ausdrücke, die sich auf null-Objekten ( None ), und Ausdrücke, die keinen Bezug zu irgendetwas, weil Sie Fehler, aber keiner von denen ist ein nicht definiertes Objekt.

InformationsquelleAutor vbiqvitovs | 2013-11-15
Schreibe einen Kommentar