Python调用内部函数

时间:2018-06-20 18:15:06

标签: python

我有以下问题:

我有一个函数,其中包含另一个函数(请参见下面的代码)。我需要调用在顶层函数中设置了参数文件名的函数getFastaEntry。我尝试使用generate_fasta_reader(filename).getFastaEntry()进行调用,但收到错误消息“函数对象没有属性getFastaEntry()”。有人可以告诉我如何调用内部函数吗?

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

    def getFastaEntry():
        filehandle = None

1 个答案:

答案 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")()