Skip to content

En Python, vous pouvez la valeur absolue d’un nombre ร  l’aide de la fonction intรฉgrรฉe obtenir ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() ou de la fonction ๐Ÿโ€Œ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() du module ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ .

Obtenir la valeur absolue d’un entier avec ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ()

La spรฉcification d’un entier ( ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ ) ร  ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() renvoie sa valeur absolue. Le type de retour est un entier ( ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ ).

print(abs(100)) # 100 print(abs(-100)) # 100 print(type(abs(100))) # <class 'int'> 
source : abs_usage.py

Obtenez la valeur absolue d’un nombre ร  virgule flottante avec ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ()

La spรฉcification d’un nombre ร  virgule flottante ( ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ ) ร  ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() renvoie sa valeur absolue. Le type de retour est un nombre ร  virgule flottante ( ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ ).

print(abs(1.23)) # 1.23 print(abs(-1.23)) # 1.23 print(type(abs(1.23))) # <class 'float'> 
source : abs_usage.py

Obtenez la valeur absolue (grandeur) d’un nombre complexe avec ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ()

En Python, les nombres complexes ( ๐œโ€Œ๐จโ€Œ๐ฆโ€Œ๐ฉโ€Œ๐ฅโ€Œ๐žโ€Œ๐ฑโ€Œ ) peuvent รชtre reprรฉsentรฉs en utilisant ๐ฃโ€Œ comme unitรฉ imaginaire.

La spรฉcification d’un nombre complexe ( ๐œโ€Œ๐จโ€Œ๐ฆโ€Œ๐ฉโ€Œ๐ฅโ€Œ๐žโ€Œ๐ฑโ€Œ ) ร  ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() renvoie sa valeur absolue (module ou grandeur). Le type de retour est un nombre ร  virgule flottante ( ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ ).

print(abs(1 + 1j)) # 1.4142135623730951 print(abs(3 + 4j)) # 5.0 print(type(abs(3 + 4j))) # <class 'float'> 
source : abs_usage.py

La mรฉthode spรฉciale __๐šโ€Œ๐›โ€Œ๐ฌโ€Œ__()

Lorsque ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() est exรฉcutรฉ, il appelle la mรฉthode spรฉciale __๐šโ€Œ๐›โ€Œ๐ฌโ€Œ__() de l’objet. ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ(๐ฑโ€Œ) est รฉquivalent ร  ๐ฑโ€Œ.__๐šโ€Œ๐›โ€Œ๐ฌโ€Œ__() .

print((-100).__abs__()) # 100 print((-1.23).__abs__()) # 1.23 print((3 + 4j).__abs__()) # 5.0 
source : abs_usage.py

Une erreur se produit lorsque ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() est utilisรฉ avec un objet dรฉpourvu de mรฉthode __๐šโ€Œ๐›โ€Œ๐ฌโ€Œ__() , comme une liste.

l = [-2, -1, 0, 1, 2] print(hasattr(l, '__abs__')) # False # print(abs(l)) # TypeError: bad operand type for abs(): 'list' 
source : abs_usage.py

La fonction intรฉgrรฉe ๐กโ€Œ๐šโ€Œ๐ฌโ€Œ๐šโ€Œ๐ญโ€Œ๐ญโ€Œ๐ซโ€Œ() dรฉtermine si un objet possรจde l’attribut ou la mรฉthode spรฉcifique.

Les classes personnalisรฉes peuvent dรฉfinir la mรฉthode __๐šโ€Œ๐›โ€Œ๐ฌโ€Œ__() pour prรฉciser comment ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() dรฉterminer leur valeur absolue. Pour la dรฉmonstration, retournez-la ici 100 .

class MyClass: def __abs__(self): return 100 mc = MyClass() print(abs(mc)) # 100 
source : abs_usage.py

Convertir les รฉlรฉments de la liste en leurs valeurs absolues

Vous pouvez convertir les รฉlรฉments de liste en leurs valeurs absolues en utilisant ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() dans une comprรฉhension de liste.

l = [-2, -1, 0, 1, 2] print([abs(i) for i in l]) # [2, 1, 0, 1, 2] 
source : abs_usage.py

Alternativement, la fonction ๐งโ€Œ๐ฉโ€Œ.๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() de NumPy peut convertir les รฉlรฉments de la liste en leurs valeurs absolues.

Diffรฉrence entre ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() et ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ()

๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() renvoie รฉgalement la valeur absolue mais toujours sous la forme d’un nombre ร  virgule flottante ( ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ ), contraire ร  ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() . Mรชme pour les entiers ( ๐ขโ€Œ๐งโ€Œ๐ญโ€Œ ), ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() renvoie un nombre ร  virgule flottante ( ๐Ÿโ€Œ๐ฅโ€Œ๐จโ€Œ๐šโ€Œ๐ญโ€Œ ).

import math print(math.fabs(-100)) # 100.0 print(type(math.fabs(-100))) # <class 'float'> print(math.fabs(-1.23)) # 1.23 print(type(math.fabs(-1.23))) # <class 'float'> 
source : math_fabs.py

๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() ne prend en charge que les nombres rรฉels et entraรฎnera une erreur pour un nombre complexe ( ๐œโ€Œ๐จโ€Œ๐ฆโ€Œ๐ฉโ€Œ๐ฅโ€Œ๐žโ€Œ๐ฑโ€Œ ).

# print(math.fabs(3 + 4j)) # TypeError: must be real number, not complex 
source : math_fabs.py

ร‰tant donnรฉ que ๐ฆโ€Œ๐šโ€Œ๐ญโ€Œ๐กโ€Œ.๐Ÿโ€Œ๐šโ€Œ๐›โ€Œ๐ฌโ€Œ() n’appelle pas __๐šโ€Œ๐›โ€Œ๐ฌโ€Œ__() , dรฉfinissant un objet d’une classe avec __๐šโ€Œ๐›โ€Œ๐ฌโ€Œ__() entraรฎnera รฉgalement une erreur.

class MyClass: def __abs__(self): return 100 mc = MyClass() # math.fabs(mc) # TypeError: must be real number, not MyClass 
source : math_fabs.py