Maison  >  Article  >  développement back-end  >  Résoudre l'erreur Python : TypeError : l'objet 'NoneType' n'est pas inscriptible

Résoudre l'erreur Python : TypeError : l'objet 'NoneType' n'est pas inscriptible

WBOY
WBOYoriginal
2023-08-20 20:16:457043parcourir

解决Python报错:TypeError: 'NoneType' object is not subscriptable

Résoudre l'erreur Python : TypeError : l'objet 'NoneType' n'est pas inscriptible

En programmation Python, nous rencontrons souvent divers messages d'erreur. L'une des erreurs courantes est "TypeError : l'objet 'NoneType' n'est pas inscriptible".

Cette erreur se déclenche lorsque nous essayons de découper un objet Aucun. Ci-dessous, j'expliquerai en détail la cause de cette erreur et donnerai quelques solutions.

Tout d'abord, regardons un exemple de code simple :

def get_name(student):
    if student:
        return student['name']
    else:
        return None

student = None
name = get_name(student)
print(name[0])

Dans cet exemple, nous définissons une fonction get_name qui accepte un objet étudiant comme paramètre et renvoie le nom de l'étudiant. Si l’objet étudiant transmis est None, None est renvoyé. get_name,它接受一个学生对象作为参数,并返回学生的名字。如果传入的学生对象为None,则返回None。

然后,我们创建一个学生对象student并将其赋值为None。接着,我们调用 get_name 函数,并将返回值赋给变量 name。最后,我们尝试打印 name 的第一个字符。

运行这段代码,我们会得到如下错误信息:

TypeError: 'NoneType' object is not subscriptable

这个错误的原因是我们对None对象进行了切片操作,但是None对象是不可切片的。

那么,如何解决这个错误呢?

首先,我们可以在切片之前检查变量是否为None。只有在变量不为None时,我们才进行切片操作。修改上面的示例代码如下:

def get_name(student):
    if student and student['name']:
        return student['name']
    else:
        return None

student = None
name = get_name(student)
if name:
    print(name[0])
else:
    print("name is None")

在这个修改后的代码中,我们使用了逻辑运算符and来同时检查变量 studentstudent['name'] 是否为None。只有在两者都不为None时,我们才进行切片操作。

另外,我们还在打印 name 前进行了一次判断,如果 name

Ensuite, nous créons un objet étudiant student et lui attribuons la valeur Aucun. Ensuite, nous appelons la fonction get_name et attribuons la valeur de retour à la variable name. Enfin, nous essayons d'imprimer le premier caractère de name.

Exécutez ce code, nous obtiendrons le message d'erreur suivant :

def get_name(student):
    try:
        return student['name']
    except TypeError:
        return None

student = None
name = get_name(student)
if name:
    print(name[0])
else:
    print("name is None")

La raison de cette erreur est que nous avons effectué une opération de découpage sur l'objet None, mais l'objet None n'est pas découpable.

Alors, comment corriger cette erreur ?

Tout d'abord, nous pouvons vérifier si la variable est Aucune avant de découper. Nous effectuons uniquement des opérations de découpage lorsque la variable n'est pas Aucune. Modifiez l'exemple de code ci-dessus comme suit :

rrreee

Dans ce code modifié, nous utilisons l'opérateur logique et pour vérifier les variables student et student['name']en même temps time > Que ce soit Aucun. Nous effectuons l'opération de découpage uniquement si les deux sont Aucun.

De plus, nous effectuons également un jugement avant d'imprimer name Si name est Aucun, un message d'invite correspondant sera affiché.

En plus de la méthode ci-dessus, il existe une manière plus concise de résoudre cette erreur. Nous pouvons utiliser l'instruction try-sauf en Python pour détecter cette erreur et fournir une solution de sauvegarde.

Considérez l'exemple de code suivant : 🎜rrreee🎜Dans ce code modifié, nous utilisons une instruction try-sauf pour intercepter les exceptions TypeError qui peuvent être déclenchées. Si une exception TypeError se produit, None est renvoyé. 🎜🎜L'utilisation de l'instruction try-sauf peut efficacement empêcher le programme de s'interrompre en raison de cette erreur. Au lieu de cela, nous pouvons proposer une alternative ou afficher un message d’invite correspondant. 🎜🎜Pour résumer, il existe deux façons de résoudre l'erreur Python « TypeError : l'objet 'NoneType' n'est pas indicable » (TypeError : l'objet 'NoneType' n'est pas slicable). 🎜🎜La première consiste à vérifier la variable avant le découpage et à effectuer l'opération de découpage uniquement lorsque la variable n'est pas Aucune. 🎜🎜L'autre consiste à utiliser l'instruction try-sauf pour détecter les exceptions TypeError qui peuvent être déclenchées et fournir une solution alternative ou des informations d'invite de sortie. 🎜🎜J'espère que les solutions proposées dans cet article pourront aider les lecteurs qui rencontrent des problèmes similaires. Pendant le processus de programmation, nous devons prêter attention à juger de la légalité des variables pour éviter les erreurs TypeError inutiles. Dans le même temps, savoir utiliser les mécanismes de gestion des exceptions est également une pratique de programmation efficace. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn