文章详情页
python - 不理解函数作用域
浏览:252日期:2022-08-10 13:34:39
问题描述
def f(p, k): def g():print(k) if k == 0:f(g, 1) else:p()f(None, 0)
我觉得在f(None, 0)执行后,执行到f(g, 1)后k应该是1,但为什么执行还是0.
问题解答
回答1:这应该属于闭包,我们可以把这段函数改一下
def f(k): def g():print(k) return ga = 1x = f(a)a = 2x()# 打印出# 1
这样会不会更好理解一些呢可以看看这篇博客,他在底层说明了闭包的原理Python闭包详解
相关文章:
1. PC 手机兼容的 编辑器2. mysql - 仅仅只是把单引号与反斜杠转义不用prepare statement能否避免sql注入?3. 无法为JSP编译类:无法解析类型java.util.Map $ Entry。从所需的.class文件间接引用它4. css3不包括5. html - angularJS中switch切换开关按钮不能操作6. css3 - 扩展本地项目中阿里的iconfont字体库,添加图标字体7. node.js - npm安装模块时,在cmd上显示的是一条白线,白线前面是一天反斜线转圈圈,然后就出现npm ERR错误了,求帮助,谢谢8. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?9. javascript - 页面加载慢,有什么优化方案10. javascript - 如何将一个长为365的数组对象按月份切割成12组?
排行榜

网公网安备