J'ai vu deux autres questions comme celle-ci mais elles n'ont pas fonctionné ...
Ma question est donc la suivante: j'ai une fonction et j'en crée une autre dans laquelle je dois appeler la première fonction. Je n'ai pas d'expérience en Python, mais je sais que dans des langages comme Matlab, c'est possible tant qu'ils se trouvent dans le même répertoire.
Un exemple de base:
def square(x):
square = x * x
(et sauvé)
maintenant, dans ma nouvelle fonction, je veux utiliser la fonction carrée que j'ai essayée:
def something (y, z)
import square
something = square(y) + square(z)
return something
qui affiche: builtins.TypeError: l'objet 'module' n'est pas appelable
Que devrais-je faire?
Pas besoin de import
si c'est dans le même fichier.
Appelez simplement square
à partir de la fonction something
.
def square(x):
square = x * x
return square
def something (y, z)
something = square(y) + square(z)
return something
Plus simplement:
def square(x):
return x * x
def something (y, z)
return square(y) + square(z)
Si , et seulement si, vous avez la fonction square
définie dans un module square
, vous devriez alors importer le nom simple à partir de celui-ci.
from square import square
Si vous ne voulez rien changer, vous devez utiliser son nom complet:
something = square.square(y) + square.square(z)
Le nom du module est square
et vous ne pouvez pas appeler de fonctions sur les modules.
Vous avez plusieurs options.
Mettez tout dans un seul fichier. Ensuite, il vous suffit d'appeler l'autre fonction; oubliez tous les import
s alors.
Placez la fonction square
dans un autre fichier, e. g. foo.py
. Ensuite, votre fonction using doit lui donner import
. Pour cela, vous avez encore deux options: import foo
et utilisez foo.square(y)
ou from foo import square
et utilisez square(y)
. (Vous pouvez également nommer votre module comme votre fonction - les deux ont des espaces de noms distincts - vous devrez donc from square import square
.)
Les modules (c'est-à-dire dans un fichier séparé) sont utilisés pour regrouper des éléments connectés logiquement, e. g. toutes les fonctions mathématiques, toutes les choses liées au système d'exploitation, toutes les choses liées au générateur de nombres aléatoires, etc. Ainsi, dans votre cas qui ressemble à un premier test, je vous proposerais de tout mettre dans un fichier et d'oublier tous les import
s.
2 façons d'utiliser une fonction dans une autre:
square()
dans un autre fichier .py
(ex: myfile.py
), puis vous pouvez importer la fonction de la manière suivante:from myfile import square
def newFunction():
square()
import
n'est pas nécessaire et vous pouvez utiliser directement square()
.