„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Knifflige Python-Fragen

Knifflige Python-Fragen

Veröffentlicht am 29.07.2024
Durchsuche:198

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?

Tricky Python Questions

Fragen

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

Antworten

Antwort auf Frage 1

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

Antwort auf Frage 2

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

Antwort auf Frage 3

Wenn du gesagt hättest:

arg2 == 2

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

  • Durch das 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)
  • By kwargs kann Schlüssel=Wert-Argumente übergeben (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 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.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/tomeraitz/tricky-python-questions-45gg?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

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