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.
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.
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
Typing ist ein Modul, das in Python3.5 hinzugefügt wurde, sodass Sie es von Anfang an verwenden können. Eingabe von Beamten
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.
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.