Neue Funktionen von Python 3.8 und Upgrade auf Python 2

2020 ist da, was bedeutet, dass Python 2 nicht mehr unterstützt wird . Um genau zu sein, die Hauptentwickler haben bereits aufgehört, an der Branche zu arbeiten, und mit der Veröffentlichung von Version 2.7.18, die PyCon US im April 2020 gewidmet ist, werden alle Aktivitäten in Bezug auf Python 2 vollständig eingestellt.


Auf der anderen Seite fand die kürzliche Veröffentlichung von Python 3.8 statt, bei der der Sprache ein wenig syntaktischer Zucker hinzugefügt wurde. Python 3.9 wird jedoch noch nicht in Kürze erwartet, und es scheint der Sprache noch nichts Interessantes hinzuzufügen.


Wenn Sie also Python 2 nicht plötzlich verlassen haben, macht es keinen Sinn, es zu ziehen: Die Unterstützung für die zweite Version wurde bereits eingestellt, und ein sofortiger Wechsel zu 3.8 ermöglicht es Ihnen, die Sprache für lange Zeit in ihrem aktuellsten Zustand zu verwenden.


Nun, um die Entscheidung zu erleichtern, folgt eine Übersicht über die wichtigsten Neuerungen von Python 3.8, die für jeden Pythonisten nützlich sind.


1. Zuweisungsausdrücke


Auch als Walross-Operator bezeichnet, eine neue Syntax, mit der Sie Variablen in einem anderen Ausdruck Werte zuweisen können. Dies ist wahrscheinlich die bekannteste und meist diskutierte Neuerung der Version 3.8.


a = 6 #    b  a ** 2 #  ,  b > 0 if (b := a ** 2) > 0: print(f' {a}  {b}.') #  6  36. 

Der Zweck der Einführung des Operators besteht darin, die Lesbarkeit des Codes zu verbessern, sodass die Verwendung (wie bei allen anderen Operatoren) nicht bei der ersten Gelegenheit, sondern nur bei Bedarf erforderlich ist.


 #     a = 5 d = [b := a+1, a := b-1, a := a*2] 

2. Nur Positionsargumente


Funktionen können zwei Arten von Argumenten annehmen.


  • Positional - durch Position übertragen
  • Benannt - mit Namen übergeben

Im folgenden Code können die Werte beider Argumente a und b sowohl nach Position als auch nach Name übergeben werden.


 def my_func(a, b=1): return a+b my_func(5,2) #    my_func(a=5, b=2) #    

In der neuen Version von Python können Sie explizit einschränken, welche der Parameter nur positionell oder nur mit den Symbolen / und * in der Funktionssignatur benannt werden dürfen (letzteres wurde jedoch vor Python 3.8 angezeigt).


Im folgenden Beispiel sind die ersten beiden Parameter a und b nur positionsabhängig, c und d können beliebige sein, und die letzten beiden Parameter e und f müssen benannt werden.


 def my_func(a, b, /, c, d, *, e, f): return a+b+c+d+e+f my_func(1, 2, 3, 4, 5, 6) # : e, f    my_func(a=1, b=2, 3, 4, e=5, f=6) # : a, b    my_func(1, 2, c=3, 4, e=5, f=6) # returns 21 my_unc(1, 2, c=3, d=4, e=5, f=6) # returns 21 

Warum die Flexibilität von Argumenttypen einschränken? In einigen Fällen ist die Verwendung eines Parameternamens anstelle seiner Position unbrauchbar und unangemessen. Die Einschränkung vermeidet auch Probleme, wenn Sie die Namen von Positionsargumenten in Zukunft ändern möchten.


3. f-lines 2.0


Es ist schwer in Worten zu beschreiben, wie viel einfacher und eleganter die Formatierung der in Python 3.6 erstellten F-Linien war .


Es ist kaum zu glauben, aber Python 3.8 hat es geschafft, sie noch komfortabler zu machen. Durch Hinzufügen des Zeichens = nach dem Namen der zu ersetzenden Variablen können Sie den Namen und den Wert anzeigen, ohne den Namen zu duplizieren.


 pi = 3 #        print(f'pi={pi}') #     print(f'{pi=}') #      

Das Debuggen mit Print wird noch komfortabler :)


4. Die umgekehrte Reihenfolge der Wörterbucheinträge


Das Durchsuchen von Wörterbüchern kann jetzt mit reverse () in umgekehrter Reihenfolge erfolgen.


5. Abrufen von Metadaten aus anderen Modulen


Mit dem neuen Modul importlib.metadata können Sie Metadaten (z. B. die Version) aus Paketen von Drittanbietern abrufen .


6. endlich + weiter


Bisher konnten Sie die Anweisung continue nicht verwenden, da diese Funktion nur schwer implementiert werden konnte. Jetzt kannst du.


 for i in range(2): try: print(i) finally: print('.') continue print('    .') # Python <= 3.7 >> SyntaxError: 'continue' not supported inside 'finally' clause # Python 3.8 >> 0 . 1 . 

Source: https://habr.com/ru/post/de483276/


All Articles