这个 scope/block leak 我最初是在学 nim 时看到的: https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programmers#scoping
最开始我还不是很在意,直到之前接手老项目代码,我都快疯了:if..elif..else 里面藏着 n 个变量,然后在后面使用变量的代码是否能正常运行完全靠运气(当然有一些业务逻辑保证,但业务逻辑一直在变啊,能从静态分析阶段排除的问题非要等到运行时再确认,费时费力) 我之前一直用嵌套 function 的方式来创造 scope ,以达到隔离变量名、最小化变量生命周期的目的 (我经常纠结命名:xx_a 、xx_b, 有了 scope 我全叫它们 xx )
我觉得有两方面的缺失在 python 中
针对第 2 点,我所了解的其他大部分语言都有对应的设计
针对第 1 点,javascript 有 let ,lua 有 local ,上面列出的其他语言没这毛病; python 的 nonlocal 也不是针对这种情况的。
很少见网上有过相关讨论,所以好奇问下大家难道不在意吗?
-- 倒是找到个相关库: https://github.com/l74d/scoping
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.