Est-il possible de déclarer une variable en Python, comme ça?:
var
pour qu'il s'initialise sur None? Il semble que Python le permette, mais dès que vous y accédez, il se bloque. Est-ce possible? Sinon, pourquoi?
EDIT: Je veux le faire pour des cas comme celui-ci:
value
for index in sequence:
if value == None and conditionMet:
value = index
break
Dupliquer
- Valeur non initialisée en python (du même auteur)
- Existe-t-il des mots clés de déclaration en Python? (du même auteur)
en relation
python
variable-assignment
variable-declaration
Joan Venge
la source
la source
Réponses:
Pourquoi ne pas simplement faire ceci:
Python est dynamique, vous n'avez donc pas besoin de déclarer des choses; ils existent automatiquement dans la première étendue où ils sont affectés. Donc, tout ce dont vous avez besoin est une ancienne déclaration d'affectation régulière comme ci-dessus.
C'est bien, car vous ne vous retrouverez jamais avec une variable non initialisée. Mais soyez prudent - cela ne signifie pas que vous ne vous retrouverez pas avec des variables incorrectement initialisées. Si vous lancez quelque chose
None
, assurez-vous que c'est ce que vous voulez vraiment et attribuez quelque chose de plus significatif si vous le pouvez.la source
Je vous recommande vivement de lire Les autres langues ont des "variables" (je les ai ajoutées comme lien connexe) - en deux minutes, vous saurez que Python a des "noms", pas des "variables".
la source
val = val or any_object
pour l'initialiser.is
pour tester si une valeur estNone
.Dans Python 3.6+, vous pouvez utiliser des annotations variables pour cela:
https://www.python.org/dev/peps/pep-0526/#abstract
PEP 484 a introduit des indications de type, également appelées annotations de type. Alors que son objectif principal était les annotations de fonction, il a également introduit la notion de commentaires de type pour annoter les variables:
Le PEP 526 vise à ajouter de la syntaxe à Python pour annoter les types de variables (y compris les variables de classe et les variables d'instance), au lieu de les exprimer par des commentaires:
Il semble être plus directement en ligne avec ce que vous demandiez "Est-il possible de déclarer une variable uniquement sans affecter de valeur en Python?"
la source
Je ne sais pas trop ce que vous essayez de faire. Python est un langage très dynamique; vous n'avez généralement pas besoin de déclarer des variables avant de les affecter ou de les utiliser. Je pense que ce que tu veux faire c'est
qui attribuera la valeur
None
à la variablefoo
.EDIT: Ce que vous semblez vraiment vouloir faire, c'est juste ceci:
Il est un peu difficile de dire si c'est vraiment le bon style à utiliser dans un tel court exemple de code, mais il est une autre façon de travailler « Pythonic ».
EDIT: ci-dessous est le commentaire de JFS (affiché ici pour afficher le code)
Sans rapport avec la question du PO, mais le code ci-dessus peut être réécrit comme suit:
REMARQUE: si
some_condition()
déclenche une exception, ilfound
n'est pas lié.REMARQUE: si len (séquence) == 0
item
est alors non lié.Le code ci-dessus n'est pas recommandé. Son but est d'illustrer le fonctionnement des variables locales, à savoir si la "variable" est "définie" ne pourrait être déterminée qu'au moment de l'exécution dans ce cas. Manière préférable:
Ou
la source
J'initialise généralement la variable à quelque chose qui dénote le type comme
ou
S'il s'agit d'un objet, ne l'initialisez pas tant que vous ne l'instanciez pas:
la source
Eh bien, si vous voulez vérifier si une variable est définie ou non, alors pourquoi ne pas vérifier si elle est dans les tableaux locals () ou globals ()? Votre code réécrit:
Si c'est une variable locale que vous recherchez, remplacez globals () par locals ().
la source
Tout d'abord, ma réponse à la question que vous avez initialement posée
Q: Comment savoir si une variable est définie à un point de mon code?
R: Lisez dans le fichier source jusqu'à ce que vous voyiez une ligne où cette variable est définie.
Mais en outre, vous avez donné un exemple de code selon lequel il existe différentes permutations qui sont assez pythoniques. Vous recherchez un moyen de scanner une séquence pour trouver des éléments qui correspondent à une condition, voici donc quelques solutions:
De toute évidence, dans cet exemple, vous pouvez remplacer le
raise
par un enreturn None
fonction de ce que vous souhaitez réaliser.Si vous vouliez tout ce qui correspondait à la condition, vous pouvez le faire:
Il y a une autre façon de le faire avec
yield
laquelle je ne vais pas vous montrer, car c'est assez compliqué dans la façon dont cela fonctionne.De plus, il existe un moyen unique pour y parvenir:
la source
Si je comprends bien votre exemple, vous n'avez de toute façon pas besoin de faire référence à la «valeur» dans l'instruction if. Vous sortez de la boucle dès qu'il peut être réglé sur quoi que ce soit.
la source
On dirait que vous essayez d'écrire C en Python. Si vous voulez trouver quelque chose dans une séquence, Python a des fonctions intégrées pour le faire, comme
la source
C'est une bonne question et malheureusement de mauvaises réponses, tout comme l'
var = None
attribution d'une valeur, et si votre script s'exécute plusieurs fois, il est écrasé àNone
chaque fois.Ce n'est pas la même chose que de définir sans attribution. J'essaie toujours de comprendre comment contourner ce problème.
la source
Est-il possible de déclarer une variable en Python (var = None):
la source
la source
Si
None
est une valeur de données valide, vous devez modifier la variable d'une autre manière. Vous pouvez utiliser:Cette sentinelle est suggérée par Nick Coghlan .
la source
Vous pouvez tromper un interprète avec ce laid oneliner
if None: var = None
Il ne fait rien d'autre que d'ajouter une variablevar
au dictionnaire de variables local, pas de l'initialiser. L'interpréteur lèvera l'exception UnboundLocalError si vous essayez d'utiliser cette variable dans une fonction par la suite. Cela fonctionnerait également pour les versions très anciennes de python. Pas simple, ni beau, mais n'attendez pas grand-chose de python.la source