簡體   English   中英

從函數內部調用函數

[英]Calling a function from inside a function

from numpy import *
from matplotlib.pyplot import *



c = 299792458 # m/s 
lamda = 643.5 *10**-9 # m

def read_file(filename):
    text_array = loadtxt(filename)
    time = text_array[:, 0]
    obs_lambda = text_array[:, 1]
    flux = text_array[:, 2]
    return [flux,time,obs_lambda]


def rad_vel(data):
    v_r = zeros(len(data[2]))
    for i in range(len(data[2])):
        v_r = c*(((data[2][i] - lamda))/(lamda))
    print v_r
    plot(data[1],v_r)
    show()
    return v_r

    test1 = read_file("test.txt")
    print test1

當我調用函數時,維度與v_r和時間有所不同。 len(time)或len(data [2])是一個包含5087個元素的數組 ,但v_r是一個標量 無法真正理解v_r是一個標量

沒有文件或模塊我不能嘗試這個,但這里是一個使用類。

from numpy import *
from matplotlib.pyplot import *
def readFileData(filename): # Reads file
    text_array = loadtxt(filename)
    ...
    flux = ... # array read from .txt
    time = ... # array read from .txt
    obs_lambda = ... # array read from .txt
    return [flux,time,obs_lambda]

def rad_vel(data): # Finds radial velocity
    for i in range(len(data[2])):
        v_r = data[2][i] - 2
    plot(data[1],v_r)
    show()
    return v_r
textData=readFileData("test.txt")
print(rad_vel(textData))

如果我理解正確,這里也許你想要的。 我想你想要一個輔助功能

def read_file(filename): # Reads file
    def rad_vel(flux,time,obs_lambda): # Finds radial velocity

        # should you declare v_r in here? 
        v_r = 0  

        for i in range(len(obs_lambda)):
            v_r = obs_lambda[i] - 2
        plot(time,v_r)
        show()
        return v_r

    text_array = loadtxt(filename)
    ...
    flux = ... # array read from .txt
    time = ... # array read from .txt
    obs_lambda = ... # array read from .txt
    return rad_vel(flux,time,obs_lambda)

與其他值一起,您必須返回內部函數

return [rad_vel,flux,time,obs_lambda]

test1 = read_file("test.txt")

test1[0]('test.txt')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM