python - 如何从外部执行嵌套函数
问题描述
我想调用 b() 而不使其成为全局函数。
def a():
def b():
print(0)
a.b()
>> AttributeError: 'function' object has no attribute 'b'
这是可能的还是我必须让它全球化?
解决方案
一种方法是让a
return b
:
def a():
def b():
print(0)
return b
a()() # prints '0'
b = a()
b() # also prints '0'
通常,您只能访问在函数内声明的变量(如果它们被返回)。
这是您在装饰器函数中经常看到的模式,因为装饰器通常在本地创建一个“包装器”函数,然后将包装器函数作为其输出返回。
推荐阅读
- vue.js - Eslint vue lint html元素换行符
- html - 如何在我的 HTML 中链接 .svg 文件并保留影响“currentColor”属性的能力?
- java - 如何在抽屉布局(带有导航抽屉菜单)中使用 Android 导航组件(Nav Graph)?
- python - Django 单例文件 API
- javascript - Babel (gulp-babel) Uncaught ReferenceError: require is not defined
- visual-studio-code - VS Code:为什么用户安装程序会警告管理员权限?
- d3.js - d3.js 数字格式未在栏上正确显示
- java - 有没有办法处理从 Spring 中的自定义异常处理程序内部抛出的异常?
- css - 错误:未知属性“网格模板列”
- java - Spring/Spring boot 链式 bean 实例化的最佳实践是什么?