J'ai récemment examiné en utilisant list()
, dict()
, tuple()
à la place de []
, {}
, et ()
, respectivement lorsque vous avez besoin de créer un vide parmi les trois. Le raisonnement est que cela semblait plus lisible. J'allais demander des opinions sur le style, mais j'ai ensuite décidé de tester la performance. Je l'ai fait:Pourquoi les méthodes list(), dict() et tuple() sont-elles plus lentes que [], {} et()?
>>> from timeit import Timer
>>> Timer('for x in range(5): y = []').timeit()
0.59327821802969538
>>> from timeit import Timer
>>> Timer('for x in range(5): y = list()').timeit()
1.2198944904251618
J'ai essayé dict()
, tuple()
et list()
et la version d'appel de la fonction de chacun était pire incroyablement que la version syntactique ({}
[]
, ()
) Donc, j'ai 3 questions:
- Pourquoi les appels de fonction sont-ils plus chers?
- Pourquoi y a-t-il tellement de différence?
- Pourquoi diable faut-il 1,2 secondes pour créer 5 listes vides dans ma minuterie? Je sais que
timeit
éteint la collecte des ordures, mais cela ne pouvait pas avoir d'effet quand je considérais que je n'utilisais querange(5)
.
re: opinion de style - J'utilise [] assez fréquemment. Je pense que c'est assez clair. La question de la performance est intéressante cependant. – nmichaels
Il y a beaucoup de choses qui paraissent bizarres à propos de python jusqu'à ce que vous vous y habituiez. Je préférerais toujours '[]' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' que ' acheteur méfiez-vous. – SingleNegationElimination