[英]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.