Hier sind einige Grammatiken, für die Sie möglicherweise einen Slapstick erhalten, wenn Sie Python kennen

Ich werde die Python-Grammatik vorstellen, die Sie krank machen kann, wenn Sie hauptsächlich die neuen Funktionen kennen.

1. Substitutionsformel

Dies ist eine neue Syntax, die aus Python3.8 hinzugefügt wurde. Es ist gut, etwas Neues zu wissen. Substitutionsausdrücke werden in der Syntax : = geschrieben, und bedingte Ausdrücke und Zuweisungsanweisungen können gleichzeitig verwendet werden.

Zum Beispiel die folgenden allgemeinen bedingten Ausdrücke

text = 'Hello New Expression!!'
text_length = len(text)
if text_length > 10:
    print(f"String is too long!!({text_length} length, expected <= 10)")

Es kann wie folgt mit : = abgekürzt werden. Sie können sehen, dass der Teil von if (text_length: = len (text))> 10: sowohl die Rolle der Zuweisung als auch des bedingten Ausdrucks spielt.

text = 'Hello New Expression!!'
if (text_length := len(text)) > 10:
    print(f"String is too long!!({text_length} length, expected <= 10)")

refs Substitutionsformel: https://www.python.org/dev/peps/pep-0572/

2. Inklusive Notation außer Liste

Ich denke, eine übliche Einschlussnotation besteht darin, eine Liste wie die folgende zu erstellen:

numbers = [1,2,3]
dubble_numbers = [x*2 for x in numbers]
print(dubble_numbers)
#[2, 4, 6]

Obwohl selten verwendet, gibt es auch inklusive Notationen für Wörterbücher, Mengen und Generatoren. Dies ist ein Doya-Gesichtspunkt.

Wenn Sie einen Schlüsselwert wie "x: x * 2" in "{}" schreiben, wird ein Wörterbuch generiert.

numbers = [1,2,3]
dubble_number_dict = {x:x*2 for x in numbers}
print(dubble_number_dict)
#{1: 2, 2: 4, 3: 6}

Wenn Sie nur einen Wert in "{}" wie "x" schreiben, wird eine Menge generiert.

numbers = [1,2,3,1,1]
dubble_number_set = {x for x in numbers}
print(dubble_number_set)
# set([1, 2, 3])

Wenn Sie in () wie Listeneinschlussnotation schreiben, wird anstelle von Tupel ein Generator generiert.

numbers = [1,2,3]
dubble_number_generator = (x for x in numbers)
print(dubble_number_generator)
# <generator object <genexpr> at 0x10d7779b0>

refs Datenstruktur: https://docs.python.org/3.9/tutorial/datastructures.html

3. Geben Sie einen Hinweis ein

Ab python3.5 ist es möglich, den Typ im Code wie eine statisch typisierte Sprache zu deklarieren (um genau zu sein, mit Anmerkungen zu versehen). Ich habe das Gefühl, dass ich die Vorzüge einer dynamisch typisierten Sprache aufgeben muss, aber wenn es um komplizierte Entwicklungen geht, denke ich, dass viele Menschen konservativ unruhig sind, wenn die Typen nicht explizit deklariert werden. Vorsichtsmaßnahmen bei der Verwendung

Der spezifische Quellcode lautet wie folgt. Es ist einfacher zu warten, stellt jedoch eine Erweiterung von Kommentaren dar und wird zur Laufzeit nicht überprüft. text: str = 123 # Assignment int wird ebenfalls fehlerfrei übergeben.

def greeting(name: str) -> str:
    return f'Hello {name}'

text: str = 'Python!!'
print(greeting(text))
# Hello Python!!

text: str = 123 # Assignment int
print(greeting(text)) # No error
# Hello 123

Überprüfungswerkzeuge werden standardmäßig nicht bereitgestellt, daher müssen Sie ein externes Werkzeug verwenden. Am bekanntesten ist wohl "mypy". http://www.mypy-lang.org/

Es gibt verschiedene andere Regeln, wie zum Beispiel das Deklarieren von benutzerdefinierten Klassen mit Typhinweisen, aber ich werde sie hier weglassen.

refs: Geben Sie einen Hinweis ein: https://docs.python.org/3.9/library/typing.html

  1. dataclass Es ist ein Datenobjekt, das aus Python3.7 hinzugefügt wurde. Dies ist eine Doya-Gesichtsfunktion, die beim Definieren einer Schnittstelle bei der Entwicklung eines Websystems hilfreich ist. Es ist eine Funktion, die mir auf einer Ebene gefällt, auf der Sie auf Python3.7 aktualisieren können, um sie zu verwenden. --Erläutern Sie eine Klasse mit einem "@ dataclass" -Dekorator.

Ein konkretes Anwendungsbeispiel lautet wie folgt.

from dataclasses import dataclass,asdict,astuple

@dataclass
class Person:
    name: str
    age: int = 0

    def greeting(self) -> str:
        return f"My name is {self.name}, {self.age} years old."

tanaka = Person('tanaka',18)
print(tanaka.greeting())
# My name is tanaka, 18 years old.

baby = Person('taro') # Use default value
print(baby.greeting())
# My name is taro, 0 years old.

print(asdict(baby)) # To dict object 
# {'name': 'taro', 'age': 0}

print(astuple(baby)) # To tuple object
# ('taro', 0)

Es gibt auch Funktionen wie das Erstellen eines unveränderlichen Objekts und das Erweitern des Initialisierungsprozesses mit __post_init__, die hier jedoch weggelassen werden.

refs: dataclass: https://docs.python.org/3/library/dataclasses.html

5. f string

Es ist eine Zeichenkettenvorlage, die aus Python3.6 hinzugefügt wurde.

Es ist einfacher und ausgefeilter als die vorherigen Zeichenfolgenmethoden format () und % operator. Setzen Sie "f" "" am Anfang der Zeichenkette und verwenden Sie sie wie folgt.

a,b = 1000,2000
print(f'a is {a},b is {b}')
# a is 1000,b is 2000

print(f'sum of ab is {a+b}') # can be calculated
# sum of ab is 3000

print(f'a: {a:,}') # separated by comma
# a: 1,000

Wie oben erwähnt, sind der Punkt, an dem eine Berechnung in der Zeichenfolge möglich ist, und der Punkt, an dem eine flexible Formatierung möglich ist, die Punkte, die lächerlich sein können.

Seit Python3.8 wurde die Funktion für das Debuggen von Variablen erweitert.

a,b = 1000,2000
print(f'a={a},b={b}') # before 3.8
# a=1000,b=2000

print(f'{a=},{b=}') # after 3.8
# a=1000,b=2000

Durch Einfügen von = nach der Variablen können Sie sehen, dass sowohl der Wert als auch der Name der Variablen ausgegeben werden.

refs: Format: https://docs.python.org/3/tutorial/inputoutput.html Debuggable: https://docs.python.org/3/whatsnew/3.8.html#f-strings-support-for-self-documenting-expressions-and-debugging

Zusammenfassung

Wenn ich vor Ort arbeite, denke ich, dass es schwierig ist, Python2 und andere frühere Schulden zu verwenden. Daher bin ich von den neuen Funktionen begeistert und möchte sie mit einem Slapstick-Gesicht reparieren.

Recommended Posts

Hier sind einige Grammatiken, für die Sie möglicherweise einen Slapstick erhalten, wenn Sie Python kennen
Was tun, wenn in Python minus Null angezeigt wird?
BigQuery - Wenn Sie einen Grund erhalten: responseTooLarge-Fehler in Python
Wenn in Python ein "Unicode-Dekodierungsfehler" auftritt
Python-Ertrag verstehen Wenn Sie Ertrag in eine Funktion einfügen, wird dieser in einen Generator geändert
Warum ist Pythons main () -if-Anweisung angehängt?
Wenn Sie TinderBot in Python schreiben, kann sie das tun
Wenn Sie der Meinung sind, dass die Person, die Sie mit pip eingegeben haben, nicht funktioniert → Verwenden Sie python3 zufällig?
Wenn Sie einen Fehler erhalten: Dieser Port wird bereits verwendet. In Django
Wenn Sie nicht weiterkommen, können Sie mkl_intel_thread.dll in Python unter Windows nicht laden
Löschen Sie ein bestimmtes Zeichen in Python, wenn es das letzte ist
Wenn Sie einer Variablen in Python einen CSV-Export zuweisen möchten
Überprüfen Sie, ob Sie in Python eine Verbindung zu einem TCP-Port herstellen können
Wenn Sie einen Singleton in Python möchten, stellen Sie sich das Modul als Singleton vor
Bei Programmierfehler: (1146, "Tabelle '<Tabellenname>' existiert nicht") tritt in Django auf
Ich habe in Python einen Discord-Bot erstellt, der übersetzt, wenn er reagiert
Was passiert, wenn Sie in Python "A, B als C importieren"?
Wenn in boto3 der Fehler no attribute angezeigt wird, überprüfen Sie die Version
Ein Memorandum mit Filterbefehlen, die Sie möglicherweise sofort vergessen
Wie bekomme ich Stacktrace in Python?
Holen Sie sich ein Zeichen für Conoha mit Python
Was tun, wenn auf pipenv der Fehler "Keine Versionen gefunden" angezeigt wird?
Eine Lösung, wenn Sie versehentlich den Python-Interpreter in / usr / local / bin / entfernen.
Erstellen Sie ein Plugin, mit dem Sie in Python nach Registerkarten für Sublime Text 3 suchen können
[Anfänger] Was passiert, wenn ich ein Programm schreibe, das in Python auf PHP läuft?
Wenn ihr in der Scope-Küche das mit einem Rand machen könnt ~ ♪
Linux-Befehl (Basic Edition), der ab heute verwendet werden kann, wenn Sie wissen
Was tun, wenn "Python nicht konfiguriert" angezeigt wird? Verwenden von PyDev in Eclipse
[Python] Dinge, die überprüft werden müssen, wenn in Django ein Unicode-Dekodierungsfehler auftritt
Selbst wenn Sie ein Python-Anfänger sind und weniger als ein Jahr Pferderennen haben, konnten Sie ein Triple gewinnen.