AEPF vs LBYL
Je comprends votre dilemme, mais Python n'est pas PHP et le style de codage connu sous le nom de Il est plus facile de demander le pardon que la permission (o FEPA en bref) est un style de codage courant en Python .
Voir la source (de la documentation ):
FEPA - Il est plus facile de demander le pardon que la permission. Ce style de codage courant en Python suppose l'existence de clés ou d'attributs valides et attrape les exceptions si l'hypothèse s'avère fausse. Ce style propre et rapide se caractérise par la présence de nombreuses instructions try et except. Cette technique contraste avec le style LBYL commun à de nombreux autres langages tels que le C.
Donc, en gros, L'utilisation des instructions try-catch n'est pas un dernier recours, c'est une pratique courante. .
"Les tableaux en Python
PHP dispose de tableaux associatifs et non associatifs, Python dispose de listes, de tuples et de dictionnaires. Les listes sont similaires aux tableaux non associatifs de PHP, les dictionnaires sont similaires aux tableaux associatifs de PHP.
Si vous voulez vérifier si la "clé" existe dans le "tableau", vous devez d'abord savoir de quel type il s'agit dans Python, car ils produisent des erreurs différentes lorsque la "clé" n'est pas présente :
>>> l = [1,2,3]
>>> l[4]
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
l[4]
IndexError: list index out of range
>>> d = {0: '1', 1: '2', 2: '3'}
>>> d[4]
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
d[4]
KeyError: 4
Et si vous utilisez le style de codage de l'EAFP, vous devriez simplement détecter ces erreurs de manière appropriée.
Style de codage LBYL - vérification de l'existence des index
Si vous tenez à utiliser l'approche LBYL, ces solutions sont faites pour vous :
-
pour les listes Il suffit de vérifier la longueur et si possible_index < len(your_list)
entonces your_list[possible_index]
existe, sinon il n'existe pas :
>>> your_list = [0, 1, 2, 3]
>>> 1 < len(your_list) # index exist
True
>>> 4 < len(your_list) # index does not exist
False
-
pour les dictionnaires vous pouvez utiliser in
et si le mot-clé possible_index in your_dict
entonces your_dict[possible_index]
existe, sinon il n'existe pas :
>>> your_dict = {0: 0, 1: 1, 2: 2, 3: 3}
>>> 1 in your_dict # index exists
True
>>> 4 in your_dict # index does not exist
False
Est-ce que cela a aidé ?
2 votes
FEPA : Il est plus facile de demander le pardon que d'obtenir la permission.
5 votes
Votre question porte sur les tableaux PHP (qui sont à peu près des dictionnaires en Python) mais votre message d'erreur fait référence à une opération de liste. Un exemple de code pourrait probablement dissiper la confusion.
1 votes
En outre : "dernier recours". Le "dernier recours" est quelque chose de très différent.
0 votes
Le problème est que j'écrivais un script pour convertir une matrice de feuille de calcul Google Docs exportée à partir d'un CSV en quelque chose d'autre. Parfois, si la dernière colonne (la plus à droite) était vide, Google ignorait la dernière virgule indiquant la dernière colonne.