我有以下问题:
我有一个函数,其中包含另一个函数(请参见下面的代码)。我需要调用在顶层函数中设置了参数文件名的函数getFastaEntry。我尝试使用generate_fasta_reader(filename).getFastaEntry()进行调用,但收到错误消息“函数对象没有属性getFastaEntry()”。有人可以告诉我如何调用内部函数吗?
def generate_fasta_reader(filename, gzipped=False, strip=True):
def getFastaEntry():
filehandle = None
答案 0 :(得分:4)
您必须返回内部函数。否则无法访问它,并且实际上在函数结束后就不复存在了,因为此时没有对它的引用。外部函数的参数可通过闭包提供给内部函数。 (我假设您实际的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")()