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 wurden vom Internet inspiriert.
Bist du also bereit, dich (von der Python-Frage) umhauen zu lassen?
Hinweis 1!: Zu jeder Frage gibt es eine Antwort mit einer Erklärung (Link unter jedem Punkt).
Hinweis 2!: Überlegen Sie für jede Frage, was das Ergebnis sein wird.
Frage 1
exapmle_dict = dict()
exapmle_dict.a = "string"
print(exapmle_dict)
Gehen Sie 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"})
Gehen Sie 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)
Gehen Sie 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()
Gehen Sie zu Antwort 4
Wenn Sie gesagt haben:
{"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 durch Punkt wie in Javascript möglich, Sie können nur über [] darauf zugreifen, und innerhalb des Schlüssels möchten Sie „a“ festlegen.
Zurück zu Frage 1
Wenn Sie gesagt haben:
{"a": "string"}
Du liegst wieder einmal falsch, die Antwort lautet:
... NameError: name 'json' is not define
Vielleicht 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"})
Weitere Informationen finden Sie unter Verwendung des Imports innerhalb der Klasse.
Zurück zu Frage 2
Wenn Sie gesagt haben:
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 lautet:
[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 die gleiche Referenz) -> arr2 erhält die Referenzadresse von arr, jedoch 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.
Das obige ist der detaillierte Inhalt vonKnifflige Python-Fragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!