En JavaScript, je peux affecter une valeur comme celle-ci donc:
é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 var i = p || 4 code> p>
Essayez: code> /
/
Sauf: code> combo? p>
5 Réponses :
Vous pouvez utiliser 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. P> i = locaux (). Obtenez ('P', 4) CODE>, 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. P>
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 code>, 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 code> si vous voulez vraiment vraiment vraiment vraiment. Les autres réponses couvrent des alternatives possibles sans cette laideur assez bien.
Les gens parfois utilisent le ou opérateur A > À cette fin: try:
i = p
except NameError:
pass
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
i = p ou 4 code> 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.
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 à Notez que vous devrait seulement utiliser ceci si des valeurs valides pour Aucun code>, puis utiliser le code suivant qui est similaire à votre JavaScript:
p code> évaluent toujours à
vrai code> dans un contexte booléen, selon Règles booléennes de Python . p> p>
La question et les assertions initiales sont trompeuses.
supposant qu'il n'y ait aucun python fonctionne de la même manière pour cet exemple em> et l'utilisation de essayer / sauf est superflu. JavaScript est légèrement différent dans ce Ainsi, codage heureux. p> p> window.p code> propriété et
p code> n'est pas une variable (et il n'y a pas de
avec code> en vélo), cela donnera lieu à un
RéférenceErrorrorrorror code>
en JavaScript au moment de l'exécution: p> var code> est hosté em> en haut d'une fonction qui signifie également
var i = i || 2 code> fonctionnera dans JavaScript (car il est équivalent de
var i; ..; i = i 2 code>). Cependant, en général, une variable doit exister avant qu'il ne soit utilisé em>. P>
ou code> (python), comme indiqué, est le "équivalent" de
|| code> (javascript), des différences de
var code> (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>
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 code>, 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.