387 Stimmen

Ist es in Python möglich, eine Variable nur zu deklarieren, ohne ihr einen Wert zuzuweisen?

Ist es möglich, eine Variable in Python zu deklarieren, etwa so?

var

so dass es auf Keine initialisiert? Es scheint, als ob Python dies erlaubt, aber sobald Sie darauf zugreifen, stürzt es ab. Ist das möglich? Wenn nicht, warum?

EDIT: Ich möchte dies für Fälle wie diesen tun:

value

for index in sequence:

   if value == None and conditionMet:
       value = index
       break

Duplizieren Sie

Verwandte Seiten

2voto

Andrew Hare Punkte 332190

Normalerweise initialisiere ich die Variable mit etwas, das den Typ angibt, wie

var = ""

oder

var = 0

Wenn es ein Objekt sein soll, dann initialisieren Sie es nicht, bevor Sie es instanziieren:

var = Var()

2voto

Jerub Punkte 40038

Zunächst einmal meine Antwort auf die Frage, die Sie ursprünglich gestellt haben

F: Wie kann ich herausfinden, ob eine Variable an einer Stelle in meinem Code definiert ist?

A: Lesen Sie in der Quelldatei nach, bis Sie eine Zeile finden, in der diese Variable definiert ist.

Darüber hinaus haben Sie ein Beispiel für einen Code gegeben, von dem es verschiedene Permutationen gibt, die ziemlich pythonisch sind. Sie suchen nach einer Möglichkeit, eine Sequenz nach Elementen zu durchsuchen, die eine Bedingung erfüllen, daher hier einige Lösungen:

def findFirstMatch(sequence):
    for value in sequence:
        if matchCondition(value):
            return value

    raise LookupError("Could not find match in sequence")

In diesem Beispiel könnten Sie natürlich die raise mit einer return None je nachdem, was Sie erreichen wollen.

Wenn Sie alles haben wollen, was der Bedingung entspricht, können Sie das tun:

def findAllMatches(sequence):
    matches = []
    for value in sequence:
        if matchCondition(value):
            matches.append(value)

    return matches

Es gibt eine weitere Möglichkeit, dies mit yield die ich Ihnen nicht zeigen werde, weil sie in ihrer Funktionsweise ziemlich kompliziert ist.

Außerdem gibt es eine einfache Möglichkeit, dies zu erreichen:

all_matches = [value for value in sequence if matchCondition(value)]

2voto

Nails N. Punkte 551

Wenn ich Ihr Beispiel richtig verstehe, brauchen Sie sich in der if-Anweisung ohnehin nicht auf den "Wert" zu beziehen. Sie brechen die Schleife ab, sobald der Wert auf irgendetwas gesetzt werden kann.

value = None
for index in sequence:
   doSomethingHere
   if conditionMet:
       value = index
       break

2voto

Ekure Edem Punkte 140

Ich weiß, es kommt spät, aber mit Python3, können Sie einen nicht initialisierten Wert deklarieren, indem Sie

uninitialized_value:str

# some code logic

uninitialized_value = "Value"

Aber seien Sie sehr vorsichtig mit diesem Trick, denn

uninitialized_value:str

# some code logic

# WILL NOT WORK
uninitialized_value += "Extra value\n"

1voto

Chris_Rands Punkte 34669

Wenn None ein gültiger Datenwert ist, müssen Sie die Variable auf eine andere Weise angeben. Sie könnten verwenden:

var = object()

Dieser Wächter wird vorgeschlagen durch Nick Coghlan .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X