python - Python调用内部函数
问题描述
我有以下问题:
我有一个内部包含另一个函数的函数(请参见下面的代码)。我需要使用在顶级函数中设置的参数文件名调用函数 getFastaEntry。我尝试使用 generate_fasta_reader(filename).getFastaEntry() 调用它,但我收到错误消息“函数对象没有属性 getFastaEntry()”。谁能告诉我如何调用内部函数?
def generate_fasta_reader(filename, gzipped=False, strip=True):
def getFastaEntry():
filehandle = None
解决方案
您必须返回内部函数。否则它是不可访问的,事实上,一旦函数结束,它就不再存在,因为此时没有对它的引用。外部函数的参数可通过闭包供内部函数使用。(我假设您的实际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")()
推荐阅读
- c# - EF Core InMemory 未抛出:无法保存更改,因为检测到循环依赖
- android - 取消注册地理围栏的延迟
- python - 如何使用整数迭代列表中索引的值
- c# - c#中判断json是数组还是对象的通用方法
- python - 为什么numpy.save没有在linux上保存文件
- bash - 在 bash 中为每个“通配符”参数添加一些文本
- python-3.x - 熊猫数据框逐行迭代,并引用前一行值进行条件匹配
- kubernetes - Kubernetes - 将静态 IP 路由到多个服务(谷歌云平台)
- android - 使用 api 在 Android 上构建库的传递依赖项
- apache-storm - 如何让 Jstorm 获取 tuplelifecycle 时间