2017-07-15 32 views
0

我一直在想如何實現這一點。通過Python中的另一個腳本創建一個新變量

我有2個python腳本,主要一個調用另一個並將它們傳遞給3個變量,然後這個只有一個函數的腳本返回一個長度爲4的元組。最後我通過第一個腳本調用這個腳本。

我的問題是有沒有什麼方法可以使元組在第一個腳本中創建一個新變量,例如矩陣或各種向量,所以不要一遍又一遍地調用函數。

腳本1

import numpy as np 
import scipy.integrate as integrate 
import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 
from matplotlib import cm 

from Funcion_gamma import Fgamma 

import time 

start_time = time.time() 

"Aluminio" 

E=7e10  #Modulo de Young 
v=0.33  #Modulo de Poison 
G=2.63e10 #Modulo de cizalladura 
h=0.00286 #Anchura de la placa 
a=0.85  #Lado 1 de la placa 
b=0.65  #Lado 2 de la placa 
rho=2703.6 #Densidad del material 
Kmuelle=3 


"M y N" 

m=7 
n=m 

Fgamma(Kmuelle,a,m) 

腳本2

import sympy as sp 
import numpy as np 

def Fgamma(KK,aa,M): 

    'Definicion de las variables simbolicas' 

    g, a, A, C, D, K, x = sp.symbols("g a A C D K x") 

    'Funcion Gartner y sus derivadas' 

    X=(A*sp.cos(g*x/a))+(sp.sin(g*x/a))+(C*sp.exp(-g*x/a))+(D*sp.exp(-g*(a-x)/a)) 
    dx1=sp.diff(X,x,1) 
    dx2=sp.diff(X,x,2) 

    'Ecuaciones a resolver' 

    eq1= sp.Eq(X.subs(x,0),0) 
    eq2= sp.Eq(dx2.subs(x,0)/dx1.subs(x,0),K) 
    eq3= sp.Eq(X.subs(x,a),0) 
    eq4= sp.Eq(dx2.subs(x,a)/dx1.subs(x,a),-K) 

    'Resolucion de las ecuaciones' 

    D1=sp.solve(eq1,D) 
    eq33 = eq3.subs(D, D1[0]) 
    C33=sp.solve(eq33,C) 
    D11=D1[0].subs(C,C33[0]) 
    eq22=eq2.subs([(C, C33[0]),(D,D11)]) 
    A22=sp.solve(eq22,A) 

    eq44=eq4.subs([(C,C33[0]),(D,D11)]) 
    A44=sp.solve(eq44,A) 

    'Obtencion de A' 

    AF=A22[0]-A44[0] 
    AFF=sp.sympify(AF.subs([(K,KK),(a,aa)])) 

    'Calculo de las raices de gamma' 

    nn=np.linspace(0,M,num=M,endpoint=False,dtype='int') 
    gamma=np.zeros(M) 
    Afinal=np.zeros(M) 
    Cfinal=np.zeros(M) 
    Dfinal=np.zeros(M)  


    for jj in nn: 
     gamma[jj]=sp.nsolve(sp.Eq(AFF,0),(3+(jj*np.pi))) 
     Afinal[jj]=AFF.subs(g,gamma[jj]) 
     Cfinal[jj]=C33[0].subs([(A,Afinal[jj]),(a,aa),(g,gamma[jj])]) 
     Dfinal[jj]=D11.subs([(A,Afinal[jj]),(a,aa),(g,gamma[jj])]) 
    print gamma 
    return gamma,Afinal,Cfinal,Dfinal 
+0

你想緩存功能的結果,以提高訪問速度? – user2464424

+0

是的,如果可能的話,在第一個腳本上創建新變量並使用該變量來存儲結果。 –

+0

然後就做吧。使用'cache = Fgamma(Kmuelle,a,m)'將該函數的結果存儲到名爲'cache'的變量中。否則,我可能不會正確理解你的問題。 – user2464424

回答

0

假設你有文件名添加這兩種腳本是script1.py和script2.py在同一目錄 要調用的函數名爲Femma的文件script2.pyscript1.py您將使用。
在文件script1.py
import script2
script2.Femma(args)

相關問題