Essayez de taper ...
dans le REPL Python 3.
Python3
>>> ...
Ellipsis
Il s'agit de l'objet Ellipsis.
ʻUn objet singleton représenté par Ellipsisou
...`.
Dans la Référence officielle, "Principalement la syntaxe de tranche étendue et les données de conteneur définies par l'utilisateur Il dit seulement "une valeur spéciale utilisée dans le type" et ne définit pas clairement son utilisation.
Le mot anglais points de suspension signifie «omis», il peut donc être utilisé lorsque vous souhaitez omettre le traitement ou les arguments.
None
"None" signifie "aucune valeur n'existe", tandis que ʻEllipsis` signifie "une certaine valeur existe mais est omise".
Du fait que la valeur de retour de bool (Ellipsis)
est True
, on peut voir que ʻEllipsis a une signification plus positive que
None`.
Python3
>>> bool(None)
False
>>> bool(Ellipsis)
True
pass
pass
est une instruction, mais ...
est une expression.
Autrement dit, «...» peut être donné à une fonction comme argument.
Python3
>>> str(Ellipsis)
'Ellipsis'
>>> str(pass)
File "<stdin>", line 1
str(pass)
^
SyntaxError: invalid syntax
En premier lieu, Python est un langage appelé le "pseudo-code exécutable" original.
Cela signifie que le code Python n'est pas simplement un «programme exécutable», mais une «expression de traitement et d'algorithmes que les humains et les ordinateurs peuvent comprendre».
Dans le pseudo-code, la partie abrégée telle que le traitement est parfois écrite comme ..., mais on peut dire que Python3 permet une expression plus abstraite en reconnaissant cela comme une valeur représentant une «omission».
Un exemple plus précis.
NumPy vous permet d'utiliser ...
en notation de tranche pour les tableaux multidimensionnels.
Dans ce cas, «...» indique que l'indice de la dimension non spécifiée est arbitraire.
Python3-NumPy
>>> import numpy
>>> a = numpy.array([[1, 2],
... [3, 4]]) #Tableau multidimensionnel 2x2
>>> a[0, ...] #Un tableau d'éléments de n'importe quelle colonne de la ligne 0
array([1, 2])
>>> a[1, ...] #Un tableau d'éléments de n'importe quelle colonne de la première ligne
array([3, 4])
>>> a[..., 0] #Un tableau d'éléments dans la colonne 0 de n'importe quelle ligne
array([1, 3])
>>> a[..., 1] #Un tableau d'éléments de la première colonne de n'importe quelle ligne
array([2, 4])
>>> a[...] #Un tableau d'éléments de n'importe quelle colonne dans n'importe quelle ligne
array([[1, 2],
[3, 4]])
Vous pourriez penser que vous pouvez faire la même chose avec :
en notation de tranche.
Python3-NumPy
>>> a[0, :]
array([1, 2])
Cependant, le comportement de «:» et «...» est différent pour les tableaux de trois dimensions ou plus.
:
Indique qu'une dimension particulière est arbitraire, mais ...
indique que l'index est arbitraire pour toutes les dimensions qui ne sont pas spécifiées.
>>> b = numpy.array([[[1, 2],
... [3, 4]],
... [[5, 6],
... [7, 8]]]) #Tableau multidimensionnel 2x2x2
>>> b[..., 0] #1er,La 2e dimension est arbitraire, l'indice de 3e dimension est 0---(1)
array([[1, 3],
[5, 7]])
>>> b[:, :, 0] # (1)Synonyme de
array([[1, 3],
[5, 7]])
>>> b[:, 0] #La 1ère dimension est arbitraire, l'index de la 2ème dimension est 0, l'index de la 3ème dimension est arbitraire---(2)
array([[1, 2],
[5, 6]])
>>> b[:, 0, :] # (2)Synonyme de
array([[1, 2],
[5, 6]])
Recommended Posts