Hello tout le monde,
J'ai dernièrement été amené à utiliser les type hints et MyPy pour rendre la base de code plus "résiliente" aux erreurs.
Par curiosité, il y a une notion que j'aimerais bien exprimer avec les types hints mais je ne suis pas sûr de savoir comment faire.
def process(val: Union[str, int, float]) -> int:
val = int(val)
...
Dans cet exemple, tout ce qu'on a besoin de savoir c'est que l'objet "val" est "convertissable" en int (i.e. implémente la méthode spéciale __int__).
Quelqu'un sait comment exprimer cette idée autrement qu'avec les Unions ?
Je trouve l'utilisation de Union trop restrictive car elle n'exprime pas l'idée de "n"importe quel objet qui peut devenir int", si je veux spécifier un autre type il faut l'ajouter de manière explicite.
Merci d'avance ![]()
Can't you take SupportsInt as your type hint? It's a Protocols that comes from the PEP which defines type hinting in python 3.9.6
En effet c'est ce que je cherchais, je l'avais pas vu dans la Doc
Merci ![]()
Tu sais a quel point les linter et analyseur statique arrivent a voir si les types hints ne sont pas respecte?
J'ai pas beaucoup d'expérience sur le sujet car ça fait qqes mois que je suis sur un projet qui utilise MyPy pour la vérification statique des types.
Cependant j'ai quand l'impression que MyPy est fiable car ça nous force souvent à passer par des classes abstraites ou des protocoles pour que MyPy comprenne que c'est du "ducktyping".
from typing import Protocol
class MyProtocol(Protocol):
def some_method():
...
class SomeClass:
def some_method():
...
def handle(value: MyProtocol):
value.some_method()
value = SomeClass()
handle(value) # OK for MyPy
Par exemple on doit faire ce genre de trucs sinon MyPy râle.
D'ailleurs je trouve même ça parfois "trop" contraignant à vrai dire, car parfois j'ai l'impression de faire du python comme je ferais du Java (mais bon c'est mon avis ^^)
D'ailleurs je trouve même ça parfois "trop" contraignant à vrai dire, car parfois j'ai l'impression de faire du python comme je ferais du Java (mais bon c'est mon avis ^^)
En meme temps python est completement inutilisable pour n'importe quoi qui fasse plus de 200 lignes sans faire ca.
(Si tu savais le nombre de bug a la con qui m'ont fait perdre 3 jours alors que le bug est trivialement trouve par le compilateur dans n'importe quel autre langage...)
J'ai aussi codé avec des langages statiques donc je vois très bien oui. ^^ J'aime bien python mais je reste assez mitigé dans son utilisation sur de grosses bases de code (expériences pro à l'appui).
Par exemple, dans mon ancienne boîte on utilisait pas MyPy et le travail en équipe en est devenu compliqué. Beaucoup d'effets de bords dans la base de code, le moindre ajout de code devenait difficile à effectuer.
Finalement entre utiliser MyPy ou non, je préfère quand même l'utiliser car ça rend les projets plus facilement maintenables.
Utiliser MyPy + des linters + tests unitaires voire d'autres outils (comme Poetry pour la gestion des dépendances) ça rend quand même Python beaucoup plus utilisable ^^
La derniere erreur que j'ai eu etait un cas ou au lieu de faire
mavar = MonType()
on a fait
mavar = MonType
et du coup tu te retrouve a utiliser et editer un objet global de l'interpreteur au lieu de creer un nouvel objet
et comme python c'est nul, tu peux quand meme faire:
mavar.proprietesuperspecifique=12
et ca execute sans probleme parceque le typage c'est pour faire joli...
3 jour pour comprendre la source du probleme...
Oui je vois le genre ^^
A priori MyPy permet d'éviter ce genre d'erreur (tu peux aussi typer les variables, pas que les paramètres de fonction)
Sinon pour info y a une librairie sympa qui s'appelle Pydantic et propose (entre autres) les dataclasses avec vérification de type (à l'exécution donc vérification dynamique)
Pourquoi? Python ce n'est pas un vrai langage de programmation?
Le 31 juillet 2021 à 02:18:07 :
Pourquoi? Python ce n'est pas un vrai langage de programmation?
Si par vrai langage de programmation on entend langage de programmation optimal pour au moins une tâche, alors non ![]()
Y a littéralement pas un seul problème pour lequel python est le bon choix
Bah si, l'automatisation de tâches par exemple (admin serveur ou autres).
Tu te vois faire ça en Java ? Faire de l'automatisation dans un langage compilé statique c'est overkill, et python a pleins de librairies intéressantes. donc c'est mieux que faire du Bash.
Sinon plus globalement pour le machine learning et le deep learning. Soit pour entrainer des modèles, soit pour les utilser => besoin de faire une API python.
C'est moi où y a bcp de trolls en ce moment sur le forum ? (Ou un tout cas des gens lourds et agressifs)
Le 31 juillet 2021 à 12:08:59 :
Bah si, l'automatisation de tâches par exemple (admin serveur ou autres).Tu te vois faire ça en Java ? Faire de l'automatisation dans un langage compilé statique c'est overkill, et python a pleins de librairies intéressantes. donc c'est mieux que faire du Bash.
Sinon plus globalement pour le machine learning et le deep learning. Soit pour entrainer des modèles, soit pour les utilser => besoin de faire une API python.
C'est moi où y a bcp de trolls en ce moment sur le forum ? (Ou un tout cas des gens lourds et agressifs)
JavaScript est mieux adapté que Python pour scripter des tâches simples, Julia est mieux adapté que Python pour faire du machine learning
D'autres questions ?
Pas vraiment non, au delà du langage, ce qui est important c'est la communauté, l'écosystème, la qualité des librairies, etc.
Julia c'est bien pour le calcul scientifique, pas (encore) pour le deep learning. La maturité des librairies est clairement pas la même.
Avant je faisais du Software Defined Networking et les SDK étaient en python donc tu m'expliques comment je fais ça dans un autre language ![]()
Là je fais du Data Engineering et python c'est un bon choix car langage commun entre les Data Engineers et Data Scientists.
Le developpement ça se limite pas à faire du web backend, frontend en PHP, Java ou Javascript...
Le 31 juillet 2021 à 12:28:06 :
Pas vraiment non, au delà du langage, ce qui est important c'est la communauté, l'écosystème, la qualité des librairies, etc.Julia c'est bien pour le calcul scientifique, pas (encore) pour le deep learning. La maturité des librairies est clairement pas la même.
Avant je faisais du Software Defined Networking et les SDK étaient en python donc tu m'expliques comment je fais ça dans un autre language
Là je fais du Data Engineering et python c'est un bon choix car langage commun entre les Data Engineers et Data Scientists.
Le developpement ça se limite pas à faire du web backend, frontend en PHP, Java ou Javascript...
Absolument faux, Julia est extrêmement utilisé de part le monde pour tous les domaines liés à la data science et au machine learning pour des problèmes à la pointe de la recherche, c'est absolument tout sauf immature comme écosystème ![]()
Le 31 juillet 2021 à 12:37:55 :
Le 31 juillet 2021 à 12:28:06 :
Pas vraiment non, au delà du langage, ce qui est important c'est la communauté, l'écosystème, la qualité des librairies, etc.Julia c'est bien pour le calcul scientifique, pas (encore) pour le deep learning. La maturité des librairies est clairement pas la même.
Avant je faisais du Software Defined Networking et les SDK étaient en python donc tu m'expliques comment je fais ça dans un autre language
Là je fais du Data Engineering et python c'est un bon choix car langage commun entre les Data Engineers et Data Scientists.
Le developpement ça se limite pas à faire du web backend, frontend en PHP, Java ou Javascript...
Absolument faux, Julia est extrêmement utilisé de part le monde pour tous les domaines liés à la data science et au machine learning pour des problèmes à la pointe de la recherche, c'est absolument tout sauf immature comme écosystème
Si ça t'intéresse tant que ça donne des exemples concrèts plutôt que dire des vérités générales. Je sais pas, donne moi des chiffres, montre moi des librairies, des noms d'entreprises qui ont fait le switch intégral de python vers Julia, etc.
Car bon là en attendant à part venir troller sur un topic qui, à la base, n'est pas un topic pour débattre sur le langage ...
Puis bon, les débats en mode "j'ignore tous les contres arguments qui montrent que mon avis n'est pas une vérité" c'est un peu fatiguant.
Le 31 juillet 2021 à 12:41:30 :
Le 31 juillet 2021 à 12:37:55 :
Le 31 juillet 2021 à 12:28:06 :
Pas vraiment non, au delà du langage, ce qui est important c'est la communauté, l'écosystème, la qualité des librairies, etc.Julia c'est bien pour le calcul scientifique, pas (encore) pour le deep learning. La maturité des librairies est clairement pas la même.
Avant je faisais du Software Defined Networking et les SDK étaient en python donc tu m'expliques comment je fais ça dans un autre language
Là je fais du Data Engineering et python c'est un bon choix car langage commun entre les Data Engineers et Data Scientists.
Le developpement ça se limite pas à faire du web backend, frontend en PHP, Java ou Javascript...
Absolument faux, Julia est extrêmement utilisé de part le monde pour tous les domaines liés à la data science et au machine learning pour des problèmes à la pointe de la recherche, c'est absolument tout sauf immature comme écosystème
Si ça t'intéresse tant que ça donne des exemples concrèts plutôt que dire des vérités générales. Je sais pas, donne moi des chiffres, montre moi des librairies, des noms d'entreprises qui ont fait le switch intégral de python vers Julia, etc.
Car bon là en attendant à part venir troller sur un topic qui, à la base, n'est pas un topic pour débattre sur le langage ...
Puis bon, les débats en mode "j'ignore tous les contres arguments qui montrent que mon avis n'est pas une vérité" c'est un peu fatiguant.
Quel argument j'ai ignoré ? ![]()
Le 31 juillet 2021 à 12:46:02 :
Le 31 juillet 2021 à 12:41:30 :
Le 31 juillet 2021 à 12:37:55 :
Le 31 juillet 2021 à 12:28:06 :
Pas vraiment non, au delà du langage, ce qui est important c'est la communauté, l'écosystème, la qualité des librairies, etc.Julia c'est bien pour le calcul scientifique, pas (encore) pour le deep learning. La maturité des librairies est clairement pas la même.
Avant je faisais du Software Defined Networking et les SDK étaient en python donc tu m'expliques comment je fais ça dans un autre language
Là je fais du Data Engineering et python c'est un bon choix car langage commun entre les Data Engineers et Data Scientists.
Le developpement ça se limite pas à faire du web backend, frontend en PHP, Java ou Javascript...
Absolument faux, Julia est extrêmement utilisé de part le monde pour tous les domaines liés à la data science et au machine learning pour des problèmes à la pointe de la recherche, c'est absolument tout sauf immature comme écosystème
Si ça t'intéresse tant que ça donne des exemples concrèts plutôt que dire des vérités générales. Je sais pas, donne moi des chiffres, montre moi des librairies, des noms d'entreprises qui ont fait le switch intégral de python vers Julia, etc.
Car bon là en attendant à part venir troller sur un topic qui, à la base, n'est pas un topic pour débattre sur le langage ...
Puis bon, les débats en mode "j'ignore tous les contres arguments qui montrent que mon avis n'est pas une vérité" c'est un peu fatiguant.
Quel argument j'ai ignoré ?
Suffit de relire.
Sinon j'attends encore de vraies sources sur pourquoi il faudrait ABSOLUMENT remplacer Julia par Python en 2021.
Bref, débat stérile.
Le 31 juillet 2021 à 12:50:37 :
Le 31 juillet 2021 à 12:46:02 :
Le 31 juillet 2021 à 12:41:30 :
Le 31 juillet 2021 à 12:37:55 :
Le 31 juillet 2021 à 12:28:06 :
Pas vraiment non, au delà du langage, ce qui est important c'est la communauté, l'écosystème, la qualité des librairies, etc.Julia c'est bien pour le calcul scientifique, pas (encore) pour le deep learning. La maturité des librairies est clairement pas la même.
Avant je faisais du Software Defined Networking et les SDK étaient en python donc tu m'expliques comment je fais ça dans un autre language
Là je fais du Data Engineering et python c'est un bon choix car langage commun entre les Data Engineers et Data Scientists.
Le developpement ça se limite pas à faire du web backend, frontend en PHP, Java ou Javascript...
Absolument faux, Julia est extrêmement utilisé de part le monde pour tous les domaines liés à la data science et au machine learning pour des problèmes à la pointe de la recherche, c'est absolument tout sauf immature comme écosystème
Si ça t'intéresse tant que ça donne des exemples concrèts plutôt que dire des vérités générales. Je sais pas, donne moi des chiffres, montre moi des librairies, des noms d'entreprises qui ont fait le switch intégral de python vers Julia, etc.
Car bon là en attendant à part venir troller sur un topic qui, à la base, n'est pas un topic pour débattre sur le langage ...
Puis bon, les débats en mode "j'ignore tous les contres arguments qui montrent que mon avis n'est pas une vérité" c'est un peu fatiguant.
Quel argument j'ai ignoré ?
Suffit de relire.
Sinon j'attends encore de vraies sources sur pourquoi il faudrait ABSOLUMENT remplacer Julia par Python en 2021.Bref, débat stérile.
C'est marrant de laisser entendre que je serais malhonnête intellectuellement dans le débat, en évitant certains arguments alors que de ton côté tu refuses de me dire à quoi tu fais allusion le tout en essayant d'éviter la question en ramenant à une question postérieure au début présent. ![]()