In den letzten zwei Jahren habe ich Python als meine Hauptprogrammiersprache verwendet. Ich dachte, das sei vielleicht ein guter Grund, „tiefer zu gehen“, wie ich es in „Knifflige JavaScript-Fragen“ getan habe. Einige der nächsten Fragen betrafen Probleme, mit denen ich mich in meinem aktuellen Job befassen musste, andere waren vom Internet inspiriert.
Sind Sie also bereit, sich von der Python-Frage umhauen zu lassen?
Hinweis 1!: Zu jeder Frage gibt es eine Antwort mit Erklärung (Link unter jedem Punkt).
Hinweis 2!: Überlegen Sie sich für jede Frage, was das Ergebnis sein wird.
Frage 1
exapmle_dict = dict()
exapmle_dict.a = "string"
print(exapmle_dict)
Gehe zu Antwort 1
Frage 2
class Json:
def __init__(self, *args, **kwargs):
import json
def print_dict_as_json(self, obj):
print(json.dumps(obj))
example_json = Json()
example_json.print_dict_as_json({"a": "string"})
Gehe zu Antwort 2
Frage 3
def myFun(arg1, arg3, **kwargs):
for key, value in kwargs.items():
print("%s == %s" % (key, value))
my_dict = {'arg1':1, 'arg2': 2}
myFun(**my_dict, arg3=3)
Gehe zu Antwort 3
Frage 4
def add_to_all_1(arr):
for i in range(len(arr)):
arr[i] =1
def my_func():
arr = [1,2,3]
add_to_all_1(arr)
arr2 = arr
print(arr2)
my_func()
Gehe zu Antwort 4
Wenn du gesagt hättest:
{"a": "string"}
Leider liegen Sie falsch, die Antwort lautet:
AttributeError: 'dict' object has no attribute 'a'
Wenn Sie wie ich sind und zuerst von Javascript kamen, ist das Zugriffswörterbuch (Objekt in Javascript) nicht per Punkt wie in Javascript, Sie können nur über [] darauf zugreifen, und innerhalb des Schlüssels möchten Sie „a“ festlegen.
Zurück zu Frage 1
Wenn du gesagt hättest:
{"a": "string"}
Sie irren sich wieder, die Antwort lautet:
... NameError: name 'json' is not define
Möglicherweise kennen Sie die Unterschiede zwischen lokalem und globalem Bereich in Python (falls nicht, sollten Sie dies lesen: Python-Bereich). Die __init__ ist eine Funktion, der Import erfolgt in einem lokalen Bereich, sodass er nicht weiß, was JSON ist. Sie können das Problem beheben, indem Sie es wie folgt global importieren:
import json class Json: def print_dict_as_json(self, obj): print(json.dumps(obj)) example_json = Json() example_json.print_dict_as_json({"a": "string"})
Oder auf eine fortgeschrittenere Art und Weise:
class Json: import json as json def print_dict_as_json(self, obj): print(self.json.dumps(obj)) example_json = Json() example_json.print_dict_as_json({"a": "string"})
Sie können die Verwendung des Imports innerhalb der Klasse für weitere Details sehen.
Zurück zu Frage 2
Wenn du gesagt hättest:
arg2 == 2
Du hast Recht! In Python haben wir drei Möglichkeiten, ein Argument zu übergeben:
def myFun(arg1): print(arg1) myFun('arg1')
def myFun(*arg1): print(*arg1) my_tuple = ('arg1', 'arg2') myFun(my_tuple)
Zurück zu Frage 3
Die Antwort ist:
[2, 3, 4]
Für einige Leute, die sich mit Bereichen und Aufgaben auskennen, scheint die Frage eine ziemlich einfache Frage zu sein. Für diejenigen, die es nicht wissen: Python speichert den Variablenspeicher als Referenz. In diesem Fall zeigt arr also auf eine Referenz in einem Speicher -> die Funktion ändert die Werte (aber immer noch dieselbe Referenz) -> arr2 wird Holen Sie sich die Referenzadresse von arr, aber nachdem die Werte geändert wurden.
Zurück zu Frage 4
Vielen Dank, dass Sie diesen Artikel gelesen haben. Ich hoffe, es hat Ihnen gefallen und Sie haben neue Dinge gelernt. Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte einen Kommentar.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3