Ich versuche, zwei Strings mit ist zu vergleichen. Eine Zeichenfolge wird von einer Funktion zurückgegeben und die andere wird nur im Vergleich deklariert. ist Tests für Objektidentität, aber nach this page funktioniert es auch mit zwei identischen Zeichenfolgen wegen Python Speicheroptimierung. Aber, folgendes nicht:Vergleichen von zwei Strings mit 'ist' - nicht wie erwartet
def uSplit(ustring):
#return user minus host
return ustring.split('!',1)[0]
user = uSplit('theuser!host')
print type(user)
print user
if user is 'theuser':
print 'ok'
else:
print 'failed'
user = 'theuser'
if user is 'theuser':
print 'ok'
Der Ausgang:
type 'str' theuser failed ok
Ich vermute, der Grund für diese eine Zeichenfolge durch eine Funktion zurückgegeben wird, ist eine andere „Art“ von String als ein String-Literal. Gibt es trotzdem eine Funktion, um ein String-Literal zurückzugeben? Ich weiß, ich könnte == verwenden, aber ich bin nur neugierig.
das 'is' Schlüsselwort ist Identität zu überprüfen, nicht Gleichheit, so ist es das falsche Werkzeug für den Job sowieso. – nosklo