Path: csiph.com!news.redatomik.org!fdn.fr!proxad.net!feeder1-2.proxad.net!cleanfeed2-a.proxad.net!nnrp3-2.free.fr!not-for-mail Subject: Re: conflit entre modules ? surcharge de sqrt From: Pierre Maurette References: <5a5b2e78$0$4843$426a74cc@news.free.fr> Newsgroups: fr.comp.lang.python Message-ID: X-Newsreader: MesNews/1.08.06.00-fr Date: Sun, 14 Jan 2018 11:53:43 +0100 MIME-Version: 1.0 X-Face: cmi$3R1_J{[}5K|8d'LDiJ$SsZ*gn,j*PhJ#KVGt+45,E_N9O}GrhhQ>fb&q<&lz=g%PEv' u"m)N|KrBMux?2:E?N7Uw3L#H>L#GwM}gY:.`W.qu z`1'W'h-AXPmB]#7~<+@H.<0M`-jBkCWbmkcT_*LBVD3|p1a?h1H;cHq{$-vbeP@Hdcqp5z~lwU7ZK `~ Reply-To: maurette.pierre@free.fr Content-Type: text/plain; charset="iso-8859-15"; format=flowed Content-Transfer-Encoding: 8bit Lines: 45 Organization: Guest of ProXad - France NNTP-Posting-Date: 14 Jan 2018 11:53:41 CET NNTP-Posting-Host: 2.4.105.60 X-Trace: 1515927221 news-1.free.fr 31630 2.4.105.60:64384 X-Complaints-To: abuse@proxad.net Xref: csiph.com fr.comp.lang.python:3013 Fabrice : > Bonjour, > > je suis débutant en Python mais pas en programmation (j'ai fait du C++) > J'aimerai calculer la racine carré d'un réel dans un programme utilisant > aussi des complexes. > > je fais : > > from math import * > from cmath import * > if sqrt(2)<3: > print('oui') > > et j'ai une erreur : > TypeError: unorderable types: complex() < int() > > pourtant sqrt(2) n'est pas un complexe ! Pourquoi Python me renvoie un > complexe dans ce cas ? > Lors de la surcharge de la fonction, Python n'est pas capable de choisir la > bonne version ? Le problème est dans vos import * sqrt est dans math et dans cmath. (Je suppose que) les import de cmath, ultérieurs, masquent ceux de math. sqrt(2) devient cmath.sqrt(2) qui est valide et renvoie un complexe. L'import * est généralement déconseillé. Je réserve cette notation à des bibliothèques personnelles pour lesquelles je veille à ce que les noms importés soient qualifiés (improbables). Ce qui vous arrive est en quelque sorte une chance. Si vous souhaitez alléger votre code, vous pourriez : from math import * import cmath as c Mais il me semble que même seul la première ligne peut poser problèmes. Donc: import math as M import cmath as C Mais je préfère me contenter de import math import cmath et de qualifier les appels. Avec la complétion c'est même plus souple. -- Pierre Maurette