Beide Male der Speicher für 'something'
wird wennx
zurückgewonnen werden war der letzte Verweis auf das String-Objekt. Im ersten Beispiel verwenden Sie ein wenig mehr Speicher, weil Sie den Namen x
herum behalten.
Ich habe etwas gesucht und es sieht so aus, als ob der Speicher sofort zurückgewonnen wird: further reading.
Es gibt einen konzeptionellen Unterschied jedoch, und Ihr Programm wird sich anders verhalten. Wenn Sie del x
, Sie unbind der Name x
, und diesen Namen zu verwenden versuchen, eine NameError
erhöhen werden:
>>> x = 'something'
>>> del x
>>> x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
Wenn Sie x = None
gesetzt Sie rebindx
ein Name None
, für das Objekt zu sein und können Verwenden Sie die Variable weiterhin wie erwartet.Zum Beispiel für truthy/falsy Tests:
>>> x = None
>>> if not x:
... print('hello cshin9!')
...
hello cshin9!
Es gibt keinen Unterschied im Speicher. Leistung, die Sie selbst überprüfen können. – Idos