簡體   English   中英

Python調用內部函數

[英]Python call inner function

我有以下問題:

我有一個函數,其中包含另一個函數(請參見下面的代碼)。 我需要調用在頂層函數中設置了參數文件名的函數getFastaEntry。我嘗試使用generate_fasta_reader(filename).getFastaEntry()進行調用,但收到錯誤消息“函數對象沒有屬性getFastaEntry()”。 有人可以告訴我如何調用內部函數嗎?

def generate_fasta_reader(filename, gzipped=False, strip=True):

    def getFastaEntry():
        filehandle = None

您必須返回內部函數。 否則無法訪問它,並且實際上在函數結束后就不復存在了,因為此時沒有對它的引用。 外部函數的參數可通過閉包提供給內部函數。 (我假設您實際的getFastaEntry()函數實際上除了分配幾乎立即超出范圍的局部變量外, getFastaEntry()執行其他操作。)

def generate_fasta_reader(filename, gzipped=False, strip=True):

    def getFastaEntry():
        filehandle = None

    return getFastaEntry

呼叫:

getter = generate_fasta_reader("foo.txt")
getter()

或者一步(如果您只需要它,則每個外部函數調用一次調用內部函數):

generate_fasta_reader("foo.txt")()

暫無
暫無

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

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