Heim >Backend-Entwicklung >Python-Tutorial >Knifflige Python-Fragen

Knifflige Python-Fragen

PHPz
PHPzOriginal
2024-07-25 01:00:52853Durchsuche

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?

Tricky Python Questions

Fragen

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

Antworten

Antwort auf Frage 1

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

Antwort auf Frage 2

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

Antwort auf Frage 3

Wenn Sie gesagt haben:

arg2 == 2

Du hast recht! In Python haben wir drei Möglichkeiten, ein Argument zu übergeben:

  • Nach dem Argument selbst:
def myFun(arg1):
   print(arg1)

myFun('arg1')
  • By *args – Liste oder Tupel von Argumenten (erlaubt uns, eine variable Anzahl von Nicht-Schlüsselwort-Argumenten an eine Python-Funktion zu übergeben):
def myFun(*arg1):
   print(*arg1)

my_tuple = ('arg1', 'arg2')
myFun(my_tuple)
  • Durch kwargs können Schlüssel=Wert-Argumente übergeben werden (kwargs ermöglicht es uns, eine variable Anzahl von Schlüsselwortargumenten an eine Python-Funktion zu übergeben) – wie in der Frage. Wenn Sie mehr über das Thema lesen möchten, können Sie hier lesen: freecodecamp – How to Use *args and **kwargs in Python

Zurück zu Frage 3

Antwort auf Frage 4

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Strings Indexing & SlicingNächster Artikel:Strings Indexing & Slicing