首页 > 解决方案 > Python调用内部函数

问题描述

我有以下问题:

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

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

    def getFastaEntry():
        filehandle = None

标签: python

解决方案


您必须返回内部函数。否则它是不可访问的,事实上,一旦函数结束,它就不再存在,因为此时没有对它的引用。外部函数的参数可通过闭包供内部函数使用。(我假设您的实际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")()

推荐阅读