Avec les indicateurs de type, vous pouvez définir des types d'arguments et de valeurs de retour dans votre programme et les coder comme s'il s'agissait d'un langage à typage statique. Les conseils de type sont traités comme des méta-informations et n'affectent pas le programme en cours d'exécution.
En gros, vous n'écrivez pas de types en python. C'est parce que python est un langage typé dynamiquement. Le typage dynamique signifie que python détermine le type et sélectionne le type approprié lorsque le programme est exécuté. Â Typage statique: déterminez le type au moment de la compilation. Le langage cible est C ou Java.
Bien que python ait également le concept de types, vous pouvez écrire des programmes sans connaître les types. Cependant, si vous écrivez un programme sans connaître le type, il est difficile de remarquer que la structure de données est manquante ou que le contenu de traitement est incorrect. Il est difficile d'identifier la cause même si une erreur inattendue se produit pendant l'exécution. Même dans les revues, il est difficile de transmettre l'essence et le but du programme créé à des tiers.
En utilisant des indices de type, les arguments des classes et des fonctions deviennent plus clairs. Cela facilite la transmission de l'intention du programme. Plus il y a de fichiers source, plus c'est efficace.
Lors de l'examen du programme avec help (), le conseil de type donné peut être affiché.
nohint.py
#Il y a une valeur de retour
def getword(name, age):
return f"je{name}est.{age}歳est."
#Aucune valeur de retour
def outputword(name, age):
print(f"je{name}est.{age}歳est.")
if __name__ == "__main__":
print(getword("Tester Taro", 30))
outputword("Testez 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 - #Il y a une valeur de retour
FUNCTIONS
getword(name, age)
#Il y a une valeur de retour
outputword(name, age)
#Aucune valeur de retour
FILE
c:\users\xxx\documents\nohint.py
hintbase.py
from typing import NoReturn
#Il y a une valeur de retour
def getword(name : str, age : int) -> str:
return f"je{name}est.{age}歳est."
#Aucune valeur de retour
def outputword1(name : str, age : int):
print(f"je{name}est.{age}歳est.")
#Aucune valeur de retour
def outputword2(name : str, age : int) -> None:
print(f"je{name}est.{age}歳est.")
#Aucune valeur de retour
def outputword3(name : str, age : int) -> NoReturn:
print(f"je{name}est.{age}歳est.")
if __name__ == "__main__":
print(getword("Tester Taro", 30))
outputword1("Testez Hanako", 23)
outputword2("Tester Manako", 24)
outputword3("Tester 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
#Il y a une valeur de retour
outputword1(name: str, age: int)
#Aucune valeur de retour
outputword2(name: str, age: int) -> None
#Aucune valeur de retour
outputword3(name: str, age: int) -> NoReturn
#Aucune valeur de retour
DATA
NoReturn = typing.NoReturn
FILE
c:\users\xxx\documents\hintbase.py
typing est un module ajouté dans python3.5, vous pouvez donc l'utiliser depuis le début. tapant officiel
nom de la fonction def(Nom de l'argument:Moule, Nom de l'argument:Moule, ...) ->Type de retour:
Écrivez le nom du type avec deux points après le nom de l'argument. S'il y a plusieurs arguments, séparez-les par une virgule.
S'il n'y a pas de valeur de retour, utilisez "None" ou "NoReturn". Le -> type de retour
peut être omis.
Si vous souhaitez utiliser NoReturn
, vous devez l'importer à partir de la saisie.
hint-base.py
from typing import NoReturn
#Il y a une valeur de retour
def getword(name : str, age : int) -> str:
return f"je{name}est.{age}歳est."
#Aucune valeur de retour
def outputword1(name : str, age : int):
print(f"je{name}est.{age}歳est.")
#Aucune valeur de retour
def outputword2(name : str, age : int) -> None:
print(f"je{name}est.{age}歳est.")
#Aucune valeur de retour
def outputword3(name : str, age : int) -> NoReturn:
print(f"je{name}est.{age}歳est.")
if __name__ == "__main__":
print(getword("Tester Taro", 30))
outputword1("Testez Hanako", 23)
outputword2("Tester Manako", 24)
outputword3("Tester Yamako", 25)
$ python hint-base.py
Je suis Test Taro. 30 ans.
Je suis un test Hanako. J'ai 23 ans.
Je suis un manako de test. J'ai 24 ans.
Je suis Test Yamako. J'ai 25 ans.
Dans la méthode de votre propre classe, le premier argument est «self», mais «self» ne nécessite pas d'indication de type.
La même chose s'applique aux méthodes de classe, et aucune indication de type n'est requise pour le premier argument cls
.
hint-class.py
from typing import Type, NoReturn
class Words:
#constructeur
def __init__(self, name : str, age : int):
self.name = name
self.age = age
#Il y a une valeur de retour
def getword(self) -> str:
return f"je{self.name}est.{self.age}歳est."
#Aucune valeur de retour
def setword(self, name : str, age : int) -> NoReturn:
self.name = name
self.age = age
if __name__ == "__main__":
words = Words("Tester Taro", 30)
print(words.getword())
words.setword("Testez Hanako", 23)
print(words.getword())
$ python hint-class.py
Je suis Test Taro. 30 ans.
Je suis un test Hanako. J'ai 23 ans.