- Python est codé en C
- Node.js est codé en C++
- Python est mono coeur car créée avant l'apparition des multi coeur
- Node.js est mono thread
const phrase = 'une phrase'
phrase = 'une autre phrase'
// -> Uncaught TypeError: invalid assignment to const 'phrase'
type maison = Readonly<{
fenêtre: number
porte: number
}>
class maison {
constructor(
readonly fenêtre: number,
readonly porte: number
) {}
}
On peut tout de même ajouter ou retirer un élément d'un tableau ou d'objet.
a="a"
a=2
print(a)
# 2
D'après la documentation :
- Muable : lists, sets et dictionaries ;
- Immuable : integers, floats, tuples et strings ;
- Mais je n'ai pas de message d'erreur ;
- La notion de constante n'existe pas.
Configurer de façon strict tsconfig.json.
Configurer de façon strict mypy.ini.
- Eslint : Configurer de façon strict
- Rome
- Fait en Rust donc super fast
- Meilleurs feedbacks que eslint
- Pas encore toutes les rules de Eslint
Il existe plein de plugin pour par exemple les tests, typescript... à mettre en place aussi.
Configurer de façon strict .pylintrc.
Un peu plus lent dans l'IDE que Eslint
.
Plus besoin de Prettier
, Eslint
fait le job (évite un module en plus et potentiellement des conflits de règle).
Python est très formatté de base (4 espaces d'indentation, pas de paranthèse, pas de ";"...).
Sinon il existe Black, Autopep8, Flake8...
- Livré avec Python et utilise requirements.txt
Pipenv ❌
- Après un
pipenv install [module]
, on est obligé de changer l'étoile par le numéro de version dansPipfile
pour fixer la version alors que je m'attends à qu'il mette le numéro de la dernière version ;- On peut faire
pipenv install [module]==1.0.0
.
- On peut faire
- Après un
pipenv install [module]
oupipenv uninstall [package]
, je me suis aperçu qu'il met à jour d'autres modules sans que je lui demande ;- On peut faire
pipenv install --keep-outdated [package]
oupipenv uninstall --keep-outdated [package]
; - Ou fixer toutes les versions comme cité dans le premier point.
- On peut faire
- Quand il y a une faille de sécurité sur une dépendance, je ne sais pas comment remonter au paquet qu'il y a dans mon
Pipfile
; - On peut installer deux fois le même package avec une même version dans
packages
etdev-packages
.
Poetry ✅
- Le plus moderne et se calque sur package.json
- Installation
Jest
Pytest
- feedbacks très difficile à lire quand un test est rouge car il y a trop bruit
- Ajouter le flag
--tb=short
pour enlever l'affichage du test
- Ajouter le flag
- Il n'y a pas de watch par défaut
- il existe des modules pour ça mais le gros inconvénient est qu'ils peuvent ne plus être maintenu
Jest le fait par défaut
Pytest ne le fait pas par défaut alors que c'est une fonctionnalité qu'il devrait maintenir
- https://github.com/joeyespo/pytest-watch
- plus maintenu depuis 2019
- aucun test
- https://github.com/olzhasar/pytest-watcher
- on ne peut pas ajouter de flag pytest à la fin contrairement à ce que dit la doc
- https://github.com/kevlened/pytest-parallel
- fait le job mais à cause des transactions (duplicate key) on ne peut pas l’utiliser
- en python, on ne peut pas écrire de répertoire avec un tiret
- en python, on ne peut pas mettre une fonction dite "privée" en dessous de celle qui l'appelle pour faire du top down
- Pas d’interface (ou bidouille) au sens POO → protocol
- Refacto pas à 100% (ie: recuperer_une_fiche_de_synthese)
- quand on manipule des chaines de caractères
- quand tu installes un module avec pipenv, il y a une étoile dans Pipfile au lieu du numéro de version