Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Article sur la mutabilité des variables en python #22

Open
Julien00859 opened this issue Mar 22, 2022 · 3 comments
Open

Article sur la mutabilité des variables en python #22

Julien00859 opened this issue Mar 22, 2022 · 3 comments
Labels
Nouvel article Proposition de création d'un nouvel article

Comments

@Julien00859
Copy link
Member

Julien00859 commented Mar 22, 2022

Plusieurs développeurs qui apprennent python alors qu'ils savent déjà programmer dans des langages de plus bas niveau (notamment C et C++) ont du mal à complètement saisir le fonctionnement des variables, du passages des variables aux fonctions, du scope des variables et de la notion de mutabilité.

Ici est un exemple d'une très longue discussion sur le sujet: https://discord.com/channels/323076998576603137/358724995159031820/955386313698320395

Ici est un autre exemple de développeur C qui éprouve des difficultés en python: https://discord.com/channels/323076998576603137/358724995159031820/955447473340555324

Je propose d'écrire un article en long en large qui viendrait apporter tous les éclaircissements sur le sujet. Dans cet article, je pense qu'il sera judicieux d'expliquer:

  • La nature complètement orienté-objet de python (aucune primitive, tout boxé dans des objets)
  • La différence entre un objet immuable (bool, int, float, str, bytes, tuple, frozenset) et muable (bytearray, list, dict, set, object)
  • La notion de scope, comment python remonte les fonctions dans l'ast pour lire des variables, où python sauvegarde les variables (par défaut, nonlocal, global)

Quelques liens, de quoi s'inspirer

D'ailleurs je me dis que ce tutoriel pourrait avoir sa place sur Zeste de Savoir... 🤔

@Nolent
Copy link

Nolent commented Mar 25, 2022

Concernant la mutabilité, on peut aussi parler du fait que a += b n'est pas a = a + b

>>> a = [1]
>>> b = a
>>> a += [2]
>>> print(a, b)
[1, 2] [1, 2]
>>> a = a + [3]
>>> print(a, b)
[1, 2, 3] [1, 2]

@Julien00859
Copy link
Member Author

Je préfère ne pas parler du cas particulier qu'est list.__iadd__, vraiment pour moi c'est un bug ce truc

@Equinox4 Equinox4 added the Nouvel article Proposition de création d'un nouvel article label Jun 4, 2022
@Julien00859
Copy link
Member Author

Histoire de rajouter de la pression à @Nolent pour qu'il écrive l'article, encore un exemple de dev C qui a rien touché à la mutabilité: https://discord.com/channels/323076998576603137/358724995159031820/999666438417698967

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Nouvel article Proposition de création d'un nouvel article
Projects
None yet
Development

No branches or pull requests

3 participants