2009-03-04 5 views
1

J'ai été intrigué par this answer à ma question à propos de getting vim to highlight unmatched brackets en code python. Plus précisément, je parle de la deuxième partie de sa réponse où il mentionne que la mise en évidence de la syntaxe C signale en fait comme une erreur toute instance d'accolades à l'intérieur des parens. C'est un indice discret que vous avez des parens non fermées lorsque toutes vos accolades en aval s'allument en rouge.Y a-t-il quelque chose qui ne peut pas apparaître entre parenthèses?

Cette astuce fonctionne car la syntaxe C n'autorise pas les accolades entre parenthèses. Pour satisfaire ma curiosité (morbide?), Puis-je faire quelque chose de similaire avec du code python? Y a-t-il quelque chose dans la syntaxe python qui n'est pas légal entre parenthèses?

Note: Je ne cherche pas à mieux répondre à mon autre question (il y a déjà beaucoup de bonnes réponses). Je suis simplement curieux si cette astuce est même possible avec le code python.

+0

@Kristo: Ce que vous avez écrit n'a que peu de sens. La réponse est trivialement évidente; alors pourquoi le demanderais-tu? La plupart des gens posent des questions parce qu'ils ne peuvent pas faire quelque chose. Qu'est-ce que tu ne peux pas faire? Quel problème as-tu? "simplement curieux" semble stupide; il y a généralement plus. –

+0

La réponse n'était pas trivialement évidente pour moi. Je suis désolé si je vous ai causé de la confusion. Quoi qu'il en soit, j'ai appris quelque chose de nouveau à partir de cette question, donc je suis satisfait. –

Répondre

5

Toute instruction Python (import, si, pour, tandis que, DEF, etc. classe) ne peut pas être dans les parenthèses:

In [1]: (import sys) 
------------------------------------------------------------ 
File "<ipython console>", line 1 
    (import sys) 
    ^
<type 'exceptions.SyntaxError'>: invalid syntax 
+0

Est-ce que cela inclut la valeur par défaut if-else? a = b si c sinon d? –

+0

le "b si c else d" peut être dans() s parce que c'est une expression. La partie d'affectation ("a = ...") ne peut pas, car dans Python, l'affectation est une instruction. En Python, aucune instruction ne peut être entre parenthèses. –

0

Je ne suis pas sûr de ce que vous essayez de faire, mais qu'en est-il de "def" ou "class"?

cet extrait est valide quand il est pas à l'intérieur des parenthèses

class dummy: pass 
+0

Aucune instruction ne peut être() 'd Seules les expressions. –

Questions connexes