Python 作用域与变量使用的深度解析
1. Python 2.x 中对布尔值的特殊操作
在 Python 2.x 里, True 和 False 并非保留字,只是内置作用域里的变量。所以,我们能够借助 True = False 这样的语句来给它们赋值。执行这样的命令,仅仅会改变该语句所在作用域里 True 的含义,其他作用域依旧会从内置作用域里找到其原始名称。
还有个更有趣的操作,在 Python 2.x 中输入 __builtin__.True = False ,这会让整个 Python 进程里的 True 都变成 False 。这是因为 Python 只有一个内置作用域,供所有使用者共享。不过在 Python 3.x 里,无法执行这样的命令,因为 True 、 False 和 None 都被当作真正的保留字。在 Python 2.x 里执行此操作,会让 IDLE 环境进入奇怪状态,导致用户代码处理过程重新开始,所以不建议在家尝试。
这种技术在说明命名空间模型,以及工具开发者修改内置函数(如 open )以满足自身需求时很有用。重新赋值内置作用域里的函数名,能让进程中的每个模块都使用新的函数。但这么做时,可能得记住函数的原始版本,以便在自定义版本里调用它。
另外,像 PyChecker 和 PyLint 这类外部工具,会提醒我们避
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



