Knifflige Python-Fragen

PHPz
Freigeben: 2024-07-25 01:00:52
Original
599 人浏览过

In den letzten zwei Jahren verwende ich Python als meine Hauptprogrammiersprache. 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 Erklärung (Link unter jedem Punkt).
Hinweis 2!: Überlegen Sie bei jeder Frage, was das Ergebnis sein wird.

Frage 1
exapmle_dict = dict()
exapmle_dict.a = "string"
print(exapmle_dict)
Nach dem Login kopieren

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"})
Nach dem Login kopieren

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)
Nach dem Login kopieren

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()
Nach dem Login kopieren

Gehen Sie zu Antwort 4

Antworten

Antwort auf Frage 1

Wenn Sie gesagt haben:

{"a": "string"}
Nach dem Login kopieren
Nach dem Login kopieren

Leider liegen Sie falsch, die Antwort lautet:

AttributeError: 'dict' object has no attribute 'a'
Nach dem Login kopieren

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"}
Nach dem Login kopieren
Nach dem Login kopieren

Du liegst wieder falsch, die Antwort lautet:

...
NameError: name 'json' is not define
Nach dem Login kopieren

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"})
Nach dem Login kopieren

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"})
Nach dem Login kopieren

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
Nach dem Login kopieren

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')
Nach dem Login kopieren
  • 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)
Nach dem Login kopieren
  • 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 lautet:

[2, 3, 4]
Nach dem Login kopieren

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

Danke, 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.

以上是Knifflige Python-Fragen的详细内容。更多信息请关注PHP中文网其他相关文章!

Quelle:dev.to
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!