Python >> Tutoriel Python >  >> Python

Null en Python :un guide complet

Recherche Null en Python ? Vous ne le trouverez pas. Cependant, Python a Aucun, qui est l'équivalent le plus proche de Null des autres langages de programmation. Explorons Python Aucunobjet.

Si vous connaissez d'autres langages de programmation comme Java, JavaScript ou PHP, vous vous demandez peut-être si Python a un Null valeur qui fonctionne de la même manière que Null dans d'autres langues.

La réponse courte est qu'il n'y a pas de Null en Python, mais il y a le Aucun objet que les programmeurs Python utilisent pour définir des objets nuls et des variables. Néanmoins, il est important de comprendre que si Aucun remplit certains des mêmes objectifs que Null dans d'autres langues, il est encore très différent du Null vous pourriez être habitué.

Le spécial Null utilisée dans de nombreux langages de programmation (par exemple, C, Java, JavaScript, PHP) désigne un pointeur vide, une valeur inconnue ou une variable qui n'a pas encore été initialisée. Souvent, Null est défini comme étant égal à 0 dans ces langages. En Python, Aucun peut avoir les mêmes objectifs que Null mais il n'est pas défini comme étant 0 ou toute autre valeur. Aucun en Python est un objet et un citoyen de première classe.

Dans cet article, je vais discuter de ce que cela implique et comment vous pouvez utiliser None de Python effectivement. Ensuite, vous pouvez commencer à pratiquer Python tout de suite avec nos Principes de base de Python. Cours de la partie 1, qui couvre les principaux concepts de base avec 95 exercices interactifs.

Aucun en Python :Une plongée en profondeur

Commençons par identifier quelques éléments qui Aucun n'est pas . Ce n'est pas la même chose que Faux , même si Aucun l'objet est faux (par exemple, est évalué à faux dans une opération booléenne). Aussi, Aucun n'est pas un zéro ou une chaîne vide. Toute comparaison avec le Aucun l'objet renvoie False , sauf pour comparer Aucun avec lui-même.

Pour vous aider à comprendre ce que Python None l'objet est , nous passerons en revue quelques cas d'utilisation, notamment :

  • Affecter Aucun à une variable.
  • Test pour aucun.
  • Obtenir None comme sortie de fonction.
  • Utiliser Aucun comme paramètre par défaut.

Attribuer un Aucun Objet à une variable

Certains langages de programmation permettent d'introduire de nouvelles variables par déclaration sans valeur initiale explicitement attribuée. La valeur initiale par défaut dans de tels cas est souvent Null .

En Python, les choses fonctionnent très différemment. Pour introduire une nouvelle variable, vous devez lui attribuer une certaine valeur, qui peut être Aucune objet. Si vous n'attribuez aucune valeur à une variable, elle est considérée comme indéfinie et vous obtiendrez un NameError en s'y référant.

Par exemple, essayons d'imprimer une variable indéfinie par rapport à une variable à laquelle on a attribué une Aucune objet.

print (employees)

Sortie :

NameError Traceback (most recent call last)
<ipython-input-2-d63c9378cee4> in <module>()
----> 1 print (employees)
NameError: name 'employees' is not defined

employees = None
print (employees)

Sortie :

None

Cependant, un Aucun L'objet ne peut pas être modifié, référencé avec des méthodes Python ou utilisé avec des opérateurs. Si vous vous référez à un Aucun objet dans de tels cas, vous obtiendrez un TypeError . Par exemple :

employees = None
print(employees + 1)

Sortie :

TypeError Traceback (most recent call last)
<ipython-input-5-e26d03919a86> in <module>()
----> 1 print(employees + 1)
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

Comme vous pouvez le voir dans le traceback, l'erreur est causée en se référant à un Aucun objet.

Vérifier si une variable est Aucune

Vous pouvez vérifier si une variable est affectée Aucune en utilisant le is None et is not None opérateurs.

employees = None
if employees is None:
    print("It is a None object.")
else:
    print("It is not a None object ")

Sortie :

It is a None object.

Notez qu'il est important d'utiliser les opérateurs d'identité (comme is None et is not None ) avec le Aucun objets en Python et non les opérateurs d'égalité comme == et != . Le problème est que les opérateurs d'égalité peuvent produire des résultats erronés lorsque vous comparez des objets définis par l'utilisateur qui remplacent leur. Voici un exemple :

class EquityVsIdentity():
    def __eq__ (self, other):
        return True

check = EquityVsIdentity()
print(check == None)
print(check is None)

Sortie :

True
False

Ici, l'opérateur d'égalité (“== ”) renvoie la mauvaise réponse car elle a été remplacée par un objet défini par l'utilisateur, tandis que l'opérateur d'identité (is ) renvoie le résultat correct car il ne peut pas être remplacé.

Une autre chose intéressante à noter est qu'en tant que Aucun objet est faux, vous pouvez simplement utiliser un if instruction pour vérifier si la variable est Aucune ou pas.

employees = None
if employees:
    print("It is not a None object.")
else:
    print("It is a None object.")

Sortie :

It is a None object.

Aucun en sortie de fonction

Tout d'abord, None est la valeur renvoyée lorsqu'il n'y a pas de return instruction dans une fonction. Créons une fonction qui ne renvoie aucune valeur et vérifions sa sortie :

def no_return():
    pass

print(no_return())

Sortie :

None

Comme vous pouvez le voir, la fonction ci-dessus ne renvoie pas explicitement une valeur. Python fournit une instruction de retour implicite avec None comme valeur de retour. Consultez ce guide sur la définition d'une fonction en Python pour en savoir plus sur les cas dans lesquels vous souhaiterez peut-être que votre fonction effectue certaines opérations sans renvoyer de valeur.

Certaines fonctions renvoient un objet réel lorsqu'elles ont un résultat réel et Aucun lorsqu'il n'y a pas de résultat. Le package re pour le traitement des expressions régulières en Python possède un certain nombre de ces fonctions.

Vous pouvez vérifier si la fonction a renvoyé la valeur en comparant le résultat avec Aucun . Par exemple, explorons la sortie du search() fonction du re package lorsqu'il n'y a pas de correspondance :

import re

languages = "She speaks English, French, German, and Norwegian."
match = re.search("Spanish", languages)

if match is None:
    print("She doesn't speak this language.")
else:
    print("She speaks this language.")

Sortie :

Ici, l'espagnol ne fait pas partie des langues parlées par cette personne. Ainsi, lors de la recherche de "espagnol", nous avons obtenu un Aucun objet. Nous avons vérifié et confirmé que la sortie du search() la fonction est Aucune dans ce cas.

Aucun comme valeur par défaut pour un paramètre facultatif

Enfin, Aucun est très souvent utilisé comme valeur par défaut pour un paramètre facultatif d'une fonction, en particulier lorsque vous devez traiter un type de données mutable tel qu'une liste. Si vous définissez la valeur par défaut d'un paramètre sur une liste, cette liste sera mise à jour dans tous les appels de fonction ultérieurs qui ne spécifient pas le paramètre facultatif correspondant - alors que vous souhaitez généralement une nouvelle liste vide à chaque fois.

Ce sera plus clair après un exemple. Nous allons commencer par créer une fonction qui utilise une liste comme valeur par défaut pour un paramètre facultatif :

def function_with_list (element, start=[]):
    start.insert(0, element)
    return start

employees = ['employee A', 'employee B', 'employee C']
function_with_list('employee D', employees)

Sortie :

['employee D', 'employee A', 'employee B', 'employee C']

Comme vous le voyez, nous avons créé une fonction qui place un nouvel élément à la position #1 sur la liste. Il fonctionne bien lorsque nous fournissons le paramètre de démarrage. Cependant, si nous ne fournissons pas ce paramètre facultatif, nous commençons à voir un comportement incorrect à chaque nouvel appel à la fonction :

function_with_list('employee D')

Sortie :

['employee D']

function_with_list('employee E')

Sortie :

['employee E', 'employee D']

function_with_list('employee F')

Sortie :

['employee F', 'employee E', 'employee D']

Comme la liste est un type d'objet mutable, nous obtenons une liste mise à jour après chaque appel de fonction lorsque nous ne transmettons pas une liste existante.

Si vous souhaitez avoir une nouvelle liste à chaque appel, pensez à utiliser un Aucun objet comme paramètre par défaut :

def function_with_none(element, start=None):
    if start is None:
        start = []
    start.insert(0, element)
    return start

employees = ['employee A', 'employee B', 'employee C']
function_with_none('employee D', employees)

Sortie :

['employee D',
 'employee A',
 'employee B',
 'employee C']

Dans cette fonction, nous vérifions si une liste de départ est Aucune ; si c'est le cas, nous initions une nouvelle liste. Cela garantit que nous obtenons le bon comportement lorsque nous ne fournissons pas de liste de départ à la fonction.

function_with_none('employee D')

Sortie :

['employee D']

function_with_none('employee E')

Sortie :

['employee E']

function_with_none('employee F')

Sortie :

['employee F']

Nous obtenons maintenant la sortie correcte, quel que soit le nombre de fois que nous appelons la fonction. Ceci n'est qu'un exemple de la façon dont un Aucun objet peut être utilisé efficacement comme valeur par défaut pour un paramètre facultatif.

Entraînons-nous Aucun en Python !

Même si Python n'a pas de Null comme vous en avez l'habitude, il dispose de tous les outils nécessaires pour gérer les valeurs nulles. De plus, grâce à la syntaxe simple et facile à suivre de Python, vous pouvez apprendre les bases de Python très rapidement - probablement en moins d'un mois. La clé est d'adopter une approche structurée pour étudier et faire beaucoup de codage.

Si vous débutez avec Python, je vous recommande de commencer par le cours Python Basics Part 1. Dans ses 95 exercices interactifs, vous apprendrez à accepter les entrées des utilisateurs, à utiliser des variables et des mathématiques en Python et à écrire if instructions, boucles et fonctions. Vous aurez également une meilleure compréhension de la Aucune taper. Vous pouvez en savoir plus sur ce cours dans cet article de présentation.

Lorsque vous êtes prêt à en savoir plus, consultez la piste Apprendre à programmer avec Python. Il comprend cinq cours interactifs avec des centaines de défis de codage. Après avoir terminé cette piste d'apprentissage, vous aurez une bonne compréhension des structures de données Python, y compris des listes, des ensembles, des dictionnaires et des tuples. Vous serez également à l'aise avec les principaux algorithmes et fonctions intégrés, comme ceux utilisés pour la recherche et le tri en Python.

Merci d'avoir lu et bon apprentissage !