[PYTHON] Erhöhen Sie die Sichtbarkeit der Quelle mit Typhinweisen

Was ist ein Typhinweis?

Mit Typhinweisen können Sie Typen für Argumente definieren und Werte in Ihrem Programm zurückgeben und diese so codieren, als wären sie eine statisch typisierte Sprache. Typhinweise werden wie Metainformationen behandelt und haben keinen Einfluss auf das ausgeführte Programm.

Grundsätzlich schreiben Sie keine Typen in Python. Das liegt daran, dass Python eine dynamisch typisierte Sprache ist. Dynamische Typisierung bedeutet, dass Python den Typ bestimmt und den geeigneten Typ auswählt, wenn das Programm ausgeführt wird. ⇔ Statische Typisierung: Bestimmen Sie den Typ zur Kompilierungszeit. Die Zielsprache ist C oder Java.

Zweck der Verwendung von Typhinweisen

Verbesserte Sichtbarkeit des Quellcodes

Obwohl Python auch das Konzept von Typen hat, können Sie Programme schreiben, ohne die Typen zu kennen. Wenn Sie jedoch ein Programm schreiben, ohne den Typ zu kennen, ist es schwierig zu bemerken, dass die Datenstruktur fehlt oder der Verarbeitungsinhalt falsch ist. Es ist schwierig, die Ursache zu identifizieren, selbst wenn während der Ausführung ein unerwarteter Fehler auftritt. Selbst in Überprüfungen ist es schwierig, das Wesentliche und den Zweck des erstellten Programms an Dritte weiterzugeben.

Durch die Verwendung von Typhinweisen werden die Argumente von Klassen und Funktionen klarer. Dies erleichtert die Vermittlung der Programmabsicht. Je mehr Quelldateien vorhanden sind, desto effektiver ist sie.

Verbesserung der Entwicklungseffizienz

Wenn Sie das Programm mit help () untersuchen, kann der angegebene Typhinweis angezeigt werden.

nohint.py



#Es gibt einen Rückgabewert
def getword(name, age):
    return f"ich{name}ist.{age}歳ist."

#Kein Rückgabewert
def outputword(name, age):
    print(f"ich{name}ist.{age}歳ist.")

if __name__ == "__main__":
    print(getword("Testen Sie Taro", 30))
    outputword("Testen Sie Hanako", 25)

$ python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import nohint
>>> help(nohint)
Help on module nohint:

NAME
    nohint - #Es gibt einen Rückgabewert

FUNCTIONS
    getword(name, age)
        #Es gibt einen Rückgabewert

    outputword(name, age)
        #Kein Rückgabewert

FILE
    c:\users\xxx\documents\nohint.py

hintbase.py


from typing import NoReturn

#Es gibt einen Rückgabewert
def getword(name : str, age : int) -> str:
    return f"ich{name}ist.{age}歳ist."

#Kein Rückgabewert
def outputword1(name : str, age : int):
    print(f"ich{name}ist.{age}歳ist.")

#Kein Rückgabewert
def outputword2(name : str, age : int) -> None:
    print(f"ich{name}ist.{age}歳ist.")

#Kein Rückgabewert
def outputword3(name : str, age : int) -> NoReturn:
    print(f"ich{name}ist.{age}歳ist.")

if __name__ == "__main__":
    print(getword("Testen Sie Taro", 30))
    outputword1("Testen Sie Hanako", 23)
    outputword2("Testen Sie Manako", 24)
    outputword3("Testen Sie Yamako", 25)

$ python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import hintbase
>>> help(hintbase)
Help on module hintbase:

NAME
    hintbase

FUNCTIONS
    getword(name: str, age: int) -> str
        #Es gibt einen Rückgabewert

    outputword1(name: str, age: int)
        #Kein Rückgabewert

    outputword2(name: str, age: int) -> None
        #Kein Rückgabewert

    outputword3(name: str, age: int) -> NoReturn
        #Kein Rückgabewert

DATA
    NoReturn = typing.NoReturn

FILE
    c:\users\xxx\documents\hintbase.py

Typhinweise verwenden

Typing ist ein Modul, das in Python3.5 hinzugefügt wurde, sodass Sie es von Anfang an verwenden können. Eingabe von Beamten

So schreiben Sie Typhinweise

Syntax

def Funktionsname(Argumentname:Schimmel, Argumentname:Schimmel, ...) ->Rückgabetyp:

Schreiben Sie den Typnamen mit einem Doppelpunkt nach dem Argumentnamen. Wenn mehrere Argumente vorhanden sind, trennen Sie diese durch ein Komma. Wenn es keinen Rückgabewert gibt, verwenden Sie "None" oder "NoReturn". Der -> Rückgabetyp kann weggelassen werden. Wenn Sie "NoReturn" verwenden möchten, müssen Sie es aus der Eingabe importieren.

hint-base.py


from typing import NoReturn

#Es gibt einen Rückgabewert
def getword(name : str, age : int) -> str:
    return f"ich{name}ist.{age}歳ist."

#Kein Rückgabewert
def outputword1(name : str, age : int):
    print(f"ich{name}ist.{age}歳ist.")

#Kein Rückgabewert
def outputword2(name : str, age : int) -> None:
    print(f"ich{name}ist.{age}歳ist.")

#Kein Rückgabewert
def outputword3(name : str, age : int) -> NoReturn:
    print(f"ich{name}ist.{age}歳ist.")

if __name__ == "__main__":
    print(getword("Testen Sie Taro", 30))
    outputword1("Testen Sie Hanako", 23)
    outputword2("Testen Sie Manako", 24)
    outputword3("Testen Sie Yamako", 25)

$ python hint-base.py
Ich bin Test Taro. Ich bin 30 Jahre alt.
Ich bin ein Test Hanako. Ich bin 23 Jahre alt.
Ich bin ein Testmanako. Ich bin 24 Jahre alt.
Ich bin Test Yamako. Ich bin 25 Jahre alt.

Für selbstgemachten Unterricht

In der Methode in Ihrer eigenen Klasse lautet das erste Argument "self", für "self" ist jedoch kein Typhinweis erforderlich. Gleiches gilt für Klassenmethoden, und für das erste Argument cls ist kein Typhinweis erforderlich.

hint-class.py


from typing import Type, NoReturn

class Words:

    #Konstrukteur
    def __init__(self, name : str, age : int):
        self.name = name
        self.age = age

    #Es gibt einen Rückgabewert
    def getword(self) -> str:
        return f"ich{self.name}ist.{self.age}歳ist."

    #Kein Rückgabewert
    def setword(self, name : str, age : int) -> NoReturn:
        self.name = name
        self.age = age

if __name__ == "__main__":
    words = Words("Testen Sie Taro", 30)
    print(words.getword())
    words.setword("Testen Sie Hanako", 23)
    print(words.getword())

$ python hint-class.py
Ich bin Test Taro. Ich bin 30 Jahre alt.
Ich bin ein Test Hanako. Ich bin 23 Jahre alt.

Recommended Posts

Erhöhen Sie die Sichtbarkeit der Quelle mit Typhinweisen
Versuchen Sie es mit Hinweisen
Ich wollte auch Typhinweise mit numpy überprüfen
[Übersetzung] PEP 0484 --Tipps
Formatieren Sie die Sprachquelle C mit pycparser