繁体   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