Angenommen importieren I die folgenden zwei Module wie folgt:On Importmodule und Methodennamen in Python
from sympy import *
from numpy import *
Beide Module haben eine exp()
Funktion definiert. Wie wählt Python welchen aus? Gibt es eine Möglichkeit, diese Funktionen nach dem Import der Module wie oben zu unterscheiden? Welcher Mechanismus gibt es, um den Benutzer zu warnen, wenn dies der Fall ist? Betrachten Sie den folgenden Satz von Befehlen in IDLE
=============================== RESTART: Shell ===============================
>>> from sympy import *
>>> from numpy import *
>>> exp(5)
148.4131591025766
>>> c = symbols('c')
>>> exp(c)
Traceback (most recent call last):
File "<pyshell#162>", line 1, in <module>
exp(c)
AttributeError: 'Symbol' object has no attribute 'exp'
>>>
=============================== RESTART: Shell ===============================
>>> from sympy import *
>>> c = symbols('c')
>>> exp(c)
exp(c)
Es scheint, dass standardmäßig Python verwendet die exp()
Definition in numpy
jedoch, wenn es auf einem Objekttyp durch sympy
erkannt genannt wird wirft es einen Fehler, der die sympy.exp()
Funktion rendert nicht brauchbar.
Für diesen Fall weiß ich, dass die Funktionen in beiden Paketen vorhanden sind, aber was passiert, wenn ich nicht? Es sollte einen Mechanismus geben, der den Benutzer warnt, um wirklich verwirrende Situationen zu vermeiden .... Wie geht die Python-Gemeinschaft mit diesem Problem um?
Sie benötigen Import als –
Über die Fehler verwenden, die Sie sehen: NumPy des 'exp' in allen Fällen verwendet wird. Die Fehler rühren von der Tatsache her, dass die Funktion ein Array oder Array-artiges Objekt als Parameter erwartet hat; Irgendwann ruft NumPy 'exp' die' exp'-Methode für den übergebenen Parameter auf, was zu einem Fehler führt, weil SymPys 'Symbol's, wie angegeben, keine solche Methode haben. – jdehesa