Dans MATLAB, il était bon de mettre toutes les fonctions que vous souhaitez utiliser dans la fonction à la fin, mais en python, vous devez les définir avant d'utiliser la fonction dans la fonction.
Je l'ai réécrit pour python parce que je voulais utiliser quelque chose comme paval (fonction de poignée?) Dans MATLAB. Cela a l'air moche, mais je pense que c'est utile lorsque vous voulez mettre la même variable dans différentes fonctions à plusieurs reprises.
test_function.py
fx=0
fp=10000
fL=10
fW=60
fq=20
fdip=5
fnu=0.25
def chinnery(fu,x,p,L,W,q,dip,nu):
def feval(funcName, *args):
return eval(funcName)(*args)
u=feval(fu, fx, fp, fq, fdip, fnu)\
- feval(fu, fx, fp-fL, fq, fdip, fnu)\
- feval(fu, fx, fp, fq-fW, fdip, fnu)\
+ feval(fu, fx, fp-fL, fq-fW, fdip, fnu)
return u
def myfunc(a,b,c,d,e):
dp=a+b*c+d-e
return dp
def myfunc2(a,b,c,d,e):
dp3=a*b-c*d-e
return dp3
up=chinnery('myfunc', fx, fp, fL, fW, fq, fdip, fnu)
print(up)
#output: 600.0
En changeant simplement la première variable (nom de la fonction en fonction?) De la fonction chinary, il est possible de changer uniquement la fonction tout en conservant la combinaison de plusieurs variables. Actuellement, seuls myfunc et myfunc2 sont disponibles, mais vous pouvez en augmenter autant que vous le souhaitez.
def feval(funcName, *args):
return eval(funcName)(*args)
Dans feval, le nom de la fonction est considéré comme la première variable et le nombre de variables après la deuxième variable est variable.
Il existe peut-être un moyen plus pratique.
Recommended Posts