3 de nos experts Data partagent leur vision sur leur métier respectif et l’écosystème Data. Ils présentent différentes technologies dont Python et Scala.
Tester plusieurs types avec le |
:
isinstance(5, int | str)
isinstance(None, int | None)
isinstance(42, None | int)
issubclass(bool, int | float)
Même chose pour les annotations :
def ma_fonction(
ma_liste: List[int | str],
param: int | None
) -> float | str:
pass
Le match/case de Python est similaire à l’instruction switch/case, qui est reconnue comme un « pattern matching structurel » en Python.
Le match/case de Python se compose de trois entités principales :
match
case
case
Là où Python se démarque des autres langages, c’est que l’on peut faire un match
sur des patterns !
Exemples de match
, du plus simple au plus avancé :
exemple = True
match exemple:
case (True|False):
print("C'est un booléen")
case _ :
print("Ce n'est pas un booléen")
def alarm(item):
match item:
case [time, action]:
print(f"{time} ! C'est l'heure de {action}!")
case [time, *actions]:
print(f'{time} !')
for action in actions:
print(f"C'est l'heure {action}!")
alarm(['Bon après-midi', 'de travailler'])
alarm(['Bonjour', 'du petit déjeuner', 'se laver les dents'])
def alarme(item):
match item:
case [('bonjour' | 'bonsoir') as time, action]:
print(f"{time.title()} ! Il faudrait {action} !")
case _:
print('Mot-clé invalide.')
alarme(['bonsoir', 'travailler'])
alarme(['bonjour', 'petit déjeuner', 'se laver les dents'])
def alarme(item):
match item:
case ['bonsoir', action] if action not in ['travailler']:
print(f'Journée finie ! Il faut {action}!')
case ['bonsoir', _]:
print('Il faut se reposer !')
case [time, *action]:
print(f'{time.title()}! Il faut {" et ".join(action)}.')
case _:
print('Mot-clé invalide.')
alarme(['bonsoir', 'travailler'])
alarme(['bonsoir', 'jouer'])
alarme(['bonjour', 'petit déjeuner', 'se laver les dents'])
class Move:
def __init__(self, horizontal=None, vertical=None):
self.horizontal = horizontal
self.vertical = vertical
def str_move(move):
match move:
case Move(horizontal='est', vertical='nord'):
print('Dir. nord-est')
case Move(horizontal='est', vertical='sud'):
print('Dir. sud-est')
case Move(horizontal='ouest', vertical='nord'):
print('Dir. nord-ouest')
case Move(horizontal='ouest', vertical='sud'):
print('Dir. sud ouest')
case Move(horizontal=None):
print(f'Dir. {move.vertical}')
case Move(vertical=None):
print(f'Dir. {move.horizontal}')
case _:
print('? Move inconnu ?')
d1 = Move('est', 'sud')
d2 = Move(vertical='nord')
d3 = Move('centre', 'centre')
str_move(d1)
str_move(d2)
str_move(d3)
Des infos sur ma veille technologique, et une jolie liste de sites web.
Python supporte désormais le type hints. Dans cet article, nous allons voir comment avoir de l’IntelliSense pour le typage ainsi qu’avoir les erreurs de typage sur Visual Studio Code.
Le framework Django regorge de nombreux filtres et balises qu’il est possible d’utiliser directement dans un fichier HTML. Dans cette vidéo je vous présente 6 balises et filtres peu connus de Django qui vont vous permettre d’optimiser vos fichiers de templates.
Dans cette vidéo, je vais vous montrer comment utiliser le package django-tailwind pour utiliser Tailwind CSS à l’intérieur d’un projet Django.📖 L’article d…
Bonjour,
J'ai une question simple : Savez vous si il existe un script python permettant de vérifier un passe sanitaire présent dans une image ?
J'ai fait une petite recherche et je suis surpris car ça ne semble pas exister …
Si vraiment il n'y a rien je vais en faire une, si vous avez des pistes d'ailleurs je suis preneur car je manque un peu de temps :)
Merci,
Commentaires : voir le flux Atom ouvrir dans le navigateur
Salut les moules,
En mai, au moment où la vaccination fut ouverte à toute la population française et que les centres furent pris d'assaut, j'ai créé doctoshotgun, un programme basé sur woob, qui permet d'automatiser la réservation de créneau de vaccination sur Doctolib.
Partant évidement d'un besoin personnel (lassitude de faire F5 sur Doctolib, pas envie de gruger, et vitemadose s'avérant au final très peu opérant), doctoshotgun a pas mal tourné et j'ai même reçu des contributions rajoutant la gestion de la version allemande de Doctolib, pays où il semble très difficile (en tout cas avant l'été) d'obtenir un rendez-vous de vaccination.
Mais depuis un mois j'ai reçu une quantité astronomique de pull requests (>200) provenant d'étudiants d'une université canadienne, visant… à appliquer des design pattern complètement inappropriés.
Je trouve que c'est une très bonne initiative que les professeurs incitent leurs étudiants à contribuer au libre. D'ailleurs woob en avait bénéficié il y a quelques années, par le biais d'un prof français, plusieurs de ses élèves ayant amélioré la couverture de tests. Le gain pour les étudiants était réel (comprendre le code source d'un logiciel libre, en extraire ce qui peut être intéressant d'automatiser comme tests, participer au processus d'acceptation d'une pull request dans une communauté libriste, etc.) autant que pour le logiciel.
En revanche ici, je m'interroge déjà sur le choix du logiciel, Doctolib n'opérant pas outre-atlantique : les étudiants n'ont aucun usage du logiciel et aucun moyen de tester. Ensuite, sans vouloir pointer de pull request en particulier, on peut voir dans la longue liste qu'ils ne se sont pas embarrassés de trouver du sens à ce qu'ils faisaient, ni ne se sont posés la question de ce que ça peut apporter au logiciel, et la moitié du temps il y a carrément des erreurs de syntaxe.
Il en résulte qu'il s'agit plus d'une perte de temps qu'autre chose pour le mainteneur du logiciel, et que j'ai pris la résolution de ne plus du tout regarder le code et de clore les PR immédiatement. J'ai également pris le parti de contacter la prof pour lui faire part du désagrément, ce à quoi j'ai reçu une réponse un peu lunaire me disant que j'étais le seul à lui avoir fait ce genre de retours… ce qui n'a pas empêché d'avoir une nouvelle vague ces derniers jours.
Ce n'est pas sans rappeler l'histoire de Digital Ocean qui sponsorisait les contributions au FOSS et qui a provoqué un afflux massif de PR inutiles sur github.
Et vous, avez-vous déjà reçu des contributions d'étudiants qui furent pertinentes ? Sur quoi portaient-elles ? De manière générale, comment est-ce que ça peut être organisé pour que ce soit au moins neutre ou au mieux bénéfique pour les projets tout en étant formateur pour les étudiants ?
Commentaires : voir le flux Atom ouvrir dans le navigateur
Dans cette vidéo je vous explique quelques termes importants que vous retrouverez dans votre apprentissage de Python et notamment ceux qui ne sont pas toujou…
Python 3.10 (rc1) est sorti le 2 août 2021, après quinze mois de développement (dont cinq à cheval sur les bêta et les rc de Python 3.9). Il reste deux mois avec des candidats (RC) avant la sortie définitive, prévue le 4 octobre 2021.
Voyons ce que cette version apporte comme nouveautés…
Les annotations de type est une nouveauté de Python 3.5 qui est de plus en plus utilisée par les développeurs Python.Vous allez voir que cela a beaucoup d’av…