[Python] Expression (1,2) ne fait pas de taple avec des parenthèses

Quand j'ai essayé de trouver le type du taple, j'ai eu l'erreur TypeError: 'type' object is not subscriptable. L'essentiel était que j'utilisais l'opérateur indice pour quelque chose qui n'était pas un tuple. Exemple: mon_tuple [0]

Vérifier les erreurs

La cause peut être décrite en un mot, mais j'ai trouvé cela intéressant lorsque j'ai enquêté sur le taple d'ici. Tout d'abord, examinons l'erreur qui s'est produite cette fois.

foo = (object)
type(foo)
# => type

type(foo[0])
# => TypeError: 'type' object is not subscriptable

#Faire deux éléments
foo = (object, str)
foo[0]
# => object

type(foo)
# => tuple

Je l'ai essayé numériquement et j'obtiens le même résultat. Je pense que c'est parce que python est une question d'objets.

bar = (0)
type(bar)
# => int

bar[0]
# => TypeError: 'int' object is not subscriptable

#Faire deux éléments
bar = (1,2)
bar[0]
# => 1

type(bar)
# =>tuple

Assurez-vous que vous pouvez mettre n'importe quel type dans le taple.

foo = (object, 1)
type(foo)
# => tuple

Comment définissez-vous un seul élément taple?

Comment définissez-vous un seul élément taple? La réponse était dans la documentation officielle.

Utilisez des virgules pour les taples à élément unique: a, ou (a,) 4. Type intégré - Documentation Python 3.4.3 </ cite >

Je l'ai essayé tout de suite.

foo = (object,)
type(foo)
# => tuple

foo[0]
# => object

C'est la virgule qui fait le tuple

Si vous ajoutez une virgule, elle sera reconnue comme un taple. ** C'est une erreur de penser "Je vois! Peut-on créer un tuple en combinant des parenthèses () et des virgules!" ** Il est facile de se faire prendre ici. Cependant, il y avait une explication polie dans le document officiel.

Notez que les taples sont créés avec des virgules et non avec des parenthèses. L'exception est un taple vide, qui nécessite des parenthèses - autoriser l'utilisation de «rien» sans parenthèses obscurcirait la grammaire. Les fautes de frappe courantes ne sont plus détectées. 6. Expression - Documentation Python 3.4.3 < / cite>

** "Créé par des virgules" **. Vérifions ça.

()
# => ()
type(())
# => tuple

1,2
# => (1, 2)
type(1,2)
# => TypeError: type() takes 1 or 3 arguments
type((1,2))
# => tuple

foo = 1,
foo
# => (1,)
type(foo)
# => tuple

Je n'avais pas besoin de parenthèses sauf pour un taple vide. Cependant, si vous essayez de générer un taple à la volée en le passant à un argument de fonction, il sera reconnu comme plusieurs arguments à moins que vous n'ajoutiez des parenthèses. Les parenthèses dans l'argument ci-dessus sont utilisées comme opérateur pour augmenter la priorité en générant d'abord le taple puis en le passant comme argument.

De plus, si vous pouvez définir un taple vide sans parenthèses, vous ne pouvez pas créer de blanc (pas un espace demi-largeur). Les taples vides peuvent être produits en série en lignes vierges, à la fin et partout.

Que signifie la parenthèse?

Qu'est-ce qui était retourné quand il n'y avait pas de virgule? Vérifions-le.

foo = (object)
foo
# => object

bar = (1)
bar
# => 1

(object)
# => object

(1)
# => 1

L'argument a été renvoyé tel quel. Cela a également été écrit dans la documentation officielle.

La liste des expressions entre parenthèses sera ce que chaque expression représente: si la liste contient au moins une virgule, ce sera un taple; sinon elle composera la liste des expressions Ce sera la ** valeur de l'expression unique elle-même **. 6. Expression - Documentation Python 3.4.3 < / cite>

En parlant de cela, lors de l'exécution d'opérations arithmétiques, les parenthèses sont utilisées pour augmenter la priorité de + et-, mais cela renvoie également la valeur d'évaluation de l'expression à l'intérieur des parenthèses.

1 + 3 * 2
# => 7

(1 + 3) * 2
# => 8

La parenthèse n'est-elle pas utilisée pour appeler une fonction en python un opérateur?

Liste des derimitas pour l'analyse des phrases dans les documents officiels avait des parenthèses et n'incluait pas d'opérateurs. La parenthèse qui appelle une fonction en python n'est-elle pas un "opérateur d'appel de fonction"?

[Langage C de wikipedia](https://ja.wikipedia.org/wiki/C%E3%81%A8C%2B%2B%E3%81%AE%E6%BC%94%E7%AE%97%E5 En regardant% AD% 90), les parenthèses () sont toujours l'opérateur "appel de fonction". S'il vous plaît laissez-moi savoir si quelqu'un sait.

Recommended Posts

[Python] Expression (1,2) ne fait pas de taple avec des parenthèses
Combinez des chaînes répétitives en une seule avec des expressions régulières Python.
Créez Puyopuyo AI avec Python
la version de python ne change pas
Créez un bot LINE avec Python + heroku
Créer Apache Log CSV avec Python
Remplacement de chaîne par une expression régulière Python
Créer un système de recommandation avec python
Faisons un graphe avec python! !!
Rendre la console Python couverte d'UNKO
Faisons un jeu de shiritori avec Python
Fractal pour faire et jouer avec Python
[VScode] Le format autopep8 ne fonctionne pas [Python]
Virtualenv ne fonctionne pas sur Python 3.5 (Windows)
Faisons la voix lentement avec Python
La commande gqlgen ne fonctionne pas avec gqlgen de go
Facilitez la soumission de pypy avec atcoder-cli (python)
[Python] Rendons matplotlib compatible avec le japonais
Python> Python n'inclut pas le dernier décalage
Créez un framework Web avec Python! (1)
Créez une application de bureau avec Python avec Electron
Faisons un bot Twitter avec Python!
Créez un framework Web avec Python! (2)
Opencv4.1 + Windows10 + Python 3.7.5 cv2.VideoCapture ne s'affiche pas correctement
Pyinstaller transforme les scripts Python en .exes qui peuvent être exécutés sous Windows
Créer un bot Twitter Trend avec heroku + Python
Le journal Python n'est pas sorti avec docker-compose up
Je veux faire un jeu avec Python
Essayez de créer un code de "décryptage" en Python
Rendre OpenCV3 disponible à partir de python3 installé avec pyenv
Créez rapidement votre propre module avec setuptools (python)
Jinja2 2.9.6 ne fonctionne pas sur la série Lambda Python 3
Remplaçons UWSC par Python (5) Faisons un robot
Essayez de créer un groupe de dièdre avec Python
Convertir JSON en CSV avec Python de Splunk
Faire fonctionner Python avec jhbuild sous OSX
Lorsque la spécification générique ne fonctionne pas avec pylint
Les opérations booléennes python ne renvoient pas de valeurs booléennes
[# 1] Créez Minecraft avec Python. ~ Recherche préliminaire et conception ~
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Twilio avec Python
Jouez avec 2016-Python
Testé avec Python
avec syntaxe (Python)
Bingo avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
[Python] L'opérateur booléen (ou / et) ne renvoie pas de valeur booléenne
Python> assert not np.isnan (loss_value), 'Model diverged with loss = NaN'
Faisons un outil de veille de commande avec python
L'acquisition d'événements par clic droit ne fonctionne pas avec opencv-python
Entrée clé qui n'attend pas l'entrée clé en Python
Expliquez en détail comment créer un son avec python