6
votes

Python || Déclaration de sauvegarde

En JavaScript, je peux affecter une valeur comme celle-ci donc:

var i = p || 4

évidemment si p ne sont pas définis, il sera recours à 4. Existe-t-il une version plus élégante de cette opération en Python qu'un Essayez: / / Sauf: combo? xxx


6 commentaires

Pourquoi n'existeriez-vous jamais la variable?


Il peut être défini ou non dans le processus, car le processus est exécuté plusieurs fois.


C'était une question rhétorique. Traitez-le dans la même veine que «Pourquoi mangeriez-vous 5 litres de Jello, puis le vomissez-vous?» Et "Pourquoi conduirais-tu votre voiture de fusée dans la face d'une falaise?".


Eh bien merci pour la merde taureau condescendante. Je lis le premier champ de la dernière ligne d'un fichier CSV avec linecache , et quand j'enveloppe ça dans int (). Si le fichier CSV n'a pas encore eu de lignes ajoutées, la dernière ligne est la ligne avec l'en-tête "ID", ce qui provient une erreur. Ce n'est pas que c'est inexistant, juste incompatible avec ce que je fais. Même si ce n'est pas bon codage, j'apprends et vous devriez garder vos questions rhétoriques à vous-même si vous n'avez pas l'intention de m'aider. :)


Je ne peux pas vous aider à coder si vous n'expliquez pas ce que vous faites et comment vous le faites.


Ne pas demander un mentor juste une comparaison spécifique entre deux langues.


5 Réponses :


3
votes

Vous pouvez utiliser i = locaux (). Obtenez ('P', 4) , mais je recommande vivement contre elle. Structure de votre code afin que vous n'ayez pas besoin de vous référer à des variables pouvant ou non être présentes.

La seule instance où j'utilise ce modèle dans JavaScript consiste à fausse des espaces de noms avec des objets globaux lorsque je ne souhaite pas dépendre de mes fichiers de script inclus dans le bon ordre. Puisque Python a un système de module approprié, je ne peux pas imaginer où cela serait nécessaire.


4 commentaires

Cela fonctionnerait mais il est fragile et non pythonique. Les approches idiomatiques doivent utiliser l'opérateur ou une expression conditionnelle.


@RAYMONDHETTERGER: Si je comprends l'OP, il ne veut pas vérifier si p est Aucun , il souhaite vérifier si la variable locale (ou globale) a même été définie.


Si tel est le cas, essayez / sauf si c'est probablement le meilleur pari (ou au moins c'est une approche plus pythonique). En outre, je questionne le cas d'utilisation - ce n'est pas typique que les programmes Python ont besoin de vérifier si une variable est déjà définie, il est donc désirant que la conception du programme doit être améliorée.


@Raymondhettinger: Oui, ma réponse explique simplement comment faire cela sans essayer..except si vous voulez vraiment vraiment vraiment vraiment. Les autres réponses couvrent des alternatives possibles sans cette laideur assez bien.



6
votes

0 commentaires

3
votes

Vous pouvez vous assurer que p code> est initialisé à une valeur sentinelle (généralement aucun code>), puis testez sa présence:

p = None
...
i = p if p is not None else 4


2 commentaires

i = p ou 4 serait NATATAIRE.


Vous penseriez avec le nombre de fois que je suis tombé dans ce piège que je me souviendrais! En général, votre chemin est plus robuste, mais si la valeur par défaut est zéro ou que l'entrée n'est pas autorisée à être zéro, la voie concise fonctionne également. Dépend de la situation.



1
votes

As Inerdia et Ignacio Vazquez-Abrams ont souligné, vos variables doivent toujours être initialisées lorsque vous y accédez. Si une variable ne recevra pas toujours de valeur, vous pouvez l'initialiser à Aucun , puis utiliser le code suivant qui est similaire à votre JavaScript: xxx

Notez que vous devrait seulement utiliser ceci si des valeurs valides pour p évaluent toujours à vrai dans un contexte booléen, selon Règles booléennes de Python .


0 commentaires

1
votes

La question et les assertions initiales sont trompeuses.

supposant qu'il n'y ait aucun window.p propriété et p n'est pas une variable (et il n'y a pas de avec en vélo), cela donnera lieu à un RéférenceErrorrorrorror en JavaScript au moment de l'exécution: xxx

python fonctionne de la même manière pour cet exemple et l'utilisation de essayer / sauf est superflu. JavaScript est légèrement différent dans ce var est hosté en haut d'une fonction qui signifie également var i = i || 2 fonctionnera dans JavaScript (car il est équivalent de var i; ..; i = i ). Cependant, en général, une variable doit exister avant qu'il ne soit utilisé .

Ainsi, ou (python), comme indiqué, est le "équivalent" de || (javascript), des différences de var (ou leur manque) de côté. Veuillez noter que Python a une notion légèrement différente de valeurs false-y que JavaScript .. / p>

codage heureux.


0 commentaires