python / python/cpython

Defaultdict docs could be clearer

Aperta
#156,950 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

docs
Lingua principale
Python
Stelle
77.2k
Fork
35.9k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

Documentation

The first three paragraphs of the current defaultdict class docs currently read:

Return a new dictionary-like object. defaultdict is a subclass of the built-in dict class. It overrides one method and adds one writable instance variable. The remaining functionality is the same as for the dict class and is not documented here.
The first argument provides the initial value for the default_factory attribute; it defaults to None. All remaining arguments are treated the same as if they were passed to the dict constructor, including keyword arguments.
defaultdicts are generic over two types, signifying (respectively) the types of the dictionary’s keys and values.

Nowhere in this do we learn about what the defaultdict does differently from dict. We don't even learn what the default_factory parameter is. In fact, the description of the default_factory attribute is decidedly uninformative as well:

This attribute is used by the missing() method; it is initialized from the first argument to the constructor, if present, or to None, if absent.

Basically, I need to read the documentation of the dunder method __missing__ to learn what imo should be stated somewhere at the top earlier.

Suggestions:

  1. Have a few beginner-friendly introductory sentences that explain in plain language what defaultdict is / how its behaviour differs from dict.

For example, the first sentence of the namedtuple section is
"Named tuples assign meaning to each position in a tuple and allow for more readable, self-documenting code." The utility / motivation for defaultdict is explained well in the Examples section so that doesn't need to be stated (and it feels hard to state its utility without examples).

  1. Expand the default_factory attribute documentation so it is more standalone. At the very least it should state that it should be a callable? The fact that the default_factory parameter must be a callable (or None) should also be stated up top, since the code otherwise throws a TypeError.

Some previous discussions: #131490, #85787 #53745

Happy to try a PR. :-)

Linked PRs
  • gh-157033

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia dalla documentazione attuale della classe defaultdict collegata nell’issue e confronta i paragrafi introduttivi e la descrizione dell’attributo default_factory con i miglioramenti richiesti. Il lavoro è completato quando la documentazione spiega la differenza tra defaultdict e dict, descrive default_factory come un callable o None e fornisce una spiegazione autonoma senza richiedere ai lettori di iniziare da missing().

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
documentation
Tipo di issue
Documentazione
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.