Ich habe dem Schlüsselwort dict
versehentlich ein Wörterbuch zugewiesen, jetzt führt es zu dict object not callable
. Wie kann ich die Funktionalität neu zuweisen, ohne den Kernel neu zu starten?Wie kann die dict-Funktionalität wieder dem 'dict' zugewiesen werden?
Antwort
dict
ist ein builtin. Builtins sind im builtin
Paket zusammengefasst. So können Sie verwenden:
import builtins
dict = builtins.dict
Ein Ratschlag ist zu nie builtins außer Kraft setzen: nicht zuordnen zu Variablen namens list
, dict
, set
, int
, float
usw.
aber sagen, dass Sie können auch dict
aus dem Bereich entfernen. In diesem Fall wird Python Fallback auf den Builtins. So Sie die Variable löschen:
temp_dict = dict
del dict # remove the `dict`, now it will delegate to the `dict` builtin
Zum Beispiel:
>>> dict = {}
>>> dict
{}
>>> del dict
>>> dict
<class 'dict'>
Sie es so löschen aus dem Rahmen, und dann wird Python wieder binden sie an den "äußeren" scope.
Ja werde ich das nie tun. Es nervte mich schon lange, also fragte ich es. – Dark
Es ist eine schlechte Idee, die Schlüsselwörter in Python zu überschreiben.
Wenn Sie möchten, Dict zurück, verwenden Sie diese:
from builtins import dict
d = dict()
Aber diese Codes wieder Ihre definierten dict außer Kraft setzen. So können Sie die folgenden Codes verwenden, um den Umfang zu steuern:
dict = lambda: 'damn it, I override the buildins'
d = dict()
print(d)
from contextlib import contextmanager
@contextmanager
def get_dict_back():
import builtins
yield builtins.dict
with get_dict_back() as build_dict:
d = build_dict({'a': 1})
print(d)
print(dict())
Die buildin dict ist nur verfügbar in der mit-Anweisung.
Ausgang:
damn it, I override the buildins
{'a': 1}
damn it, I override the buildins
Es scheint kontra intuitiv, dies zu tun, weil es bereits eine vorhandene Variable namens "dict" gibt, die Sie auch nicht beschatten möchten. Es im Namespace zu behalten wäre besser. –
@ cᴏʟᴅsᴘᴇᴇᴅ Sie haben Recht, ich werde es besser machen. –
@MenglongLi obwohl ich fühlte, 'Willem Van Onsem' ist viel einfacher. – Dark
- 1. Wie kann Date dem DefaultDate zugewiesen werden?
- 2. Gleicher Speicherplatz wird wieder zugewiesen & wieder
- 3. Wie kann JavaScript-Variablen dem HTML-Tag zugewiesen werden?
- 4. Wie kann der Rückgabewert eines Versprechens dem Objektschlüssel zugewiesen werden?
- 5. Wie kann dem jQuery-Objekt eine benutzerdefinierte Eigenschaft zugewiesen werden?
- 6. Speicher kann nicht zugewiesen werden
- 7. C# Variablen werden immer wieder den Anfangswerten zugewiesen
- 8. OAuthOptions.Scope kann nicht zugewiesen werden
- 9. Kann nicht herausfinden, warum dem Vektor falsche Werte zugewiesen werden?
- 10. Typ 'URLSearchParams' kann nicht dem Typ 'URLSearchParams' zugewiesen werden
- 11. Typescript - Typ 'false' kann nicht dem Typ 'true' zugewiesen werden
- 12. Typ 'Observable ' kann nicht dem Typ '[]' zugewiesen werden.
- 13. Der Typ '[SKNode]' kann nicht dem Typ 'SKSpriteNode!' Zugewiesen werden.
- 14. Syntaxfehler: "kann dem Operator nicht zugewiesen werden" Python
- 15. Kann der Typ 'UIColor' nicht dem Typ 'String?' Zugewiesen werden?
- 16. Python-Fehler - kann dem Literal nicht zugewiesen werden
- 17. Das Protokollarray kann dem generischen Array nicht zugewiesen werden
- 18. Wie kann die angezeigte Bootstrap-Registerkarte wieder angeklickt werden?
- 19. Speicherfehlerspeicher kann nicht zugewiesen werden Problem
- 20. Wie kann die Rückgabe des asynchronen Werts dem ursprünglichen Status des Reduzierers zugewiesen werden?
- 21. NSArray kann während UIViewController nicht zugewiesen oder zugewiesen werden
- 22. Wie dem verschachtelten JSON-Array Werte zugewiesen werden
- 23. Subclassing dict: Soll dict .__ init __() aufgerufen werden?
- 24. ListList kann List nicht zugewiesen werden, warum?
- 25. Wie kann die ID eines Elements aus dem jQuery-Ereignis 'on' wieder verwendet werden?
- 26. Kann nicht im Konstruktor zugewiesen werden
- 27. Ermitteln Sie, ob die reflektierte Eigenschaft Null zugewiesen werden kann
- 28. Wie werden Ausnahmen, die auf dem Stack zugewiesen sind, über ihren Gültigkeitsbereich hinaus erfasst?
- 29. Mehrdimensionale Arrays, die über Calloc zugewiesen werden
- 30. OrcRelation kann HadoopFsRelation nicht zugewiesen werden
'del dict' sollte funktionieren? – ayhan
Ja ... das ist ein Betrogener (seit du gefragt hast). –
@ cᴏʟᴅsᴘᴇᴇᴅ Sie sind wirklich gut darin, Duplikate zu finden. :-) – Dark