In MATLAB war es gut, alle Funktionen, die Sie verwenden möchten, am Ende in die Funktion einzufügen, aber in Python müssen Sie sie definieren, bevor Sie die Funktion in der Funktion verwenden.
Ich habe es für Python umgeschrieben, weil ich in MATLAB so etwas wie Paval (Handle-Funktion?) Verwenden wollte. Es sieht hässlich aus, aber ich denke, es ist nützlich, wenn Sie dieselbe Variable wiederholt in verschiedene Funktionen einfügen möchten.
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
Durch einfaches Ändern der ersten Variablen (Name der Funktion in Funktion?) Der Funktion chinary ist es möglich, nur die Funktion zu ändern, während die Kombination mehrerer Variablen beibehalten wird. Derzeit sind nur myfunc und myfunc2 verfügbar, Sie können jedoch beliebig viele erhöhen.
def feval(funcName, *args):
return eval(funcName)(*args)
In feval wird der Funktionsname als erste Variable verwendet, und die Anzahl der Variablen nach der zweiten Variablen ist variabel.
Vielleicht gibt es einen bequemeren Weg.
Recommended Posts