Python2.7导入print_function后,keyword.kwlist为何未更新?
这是有意设计的行为
在Python 2.7中,from __future__ import print_function的作用是将print从语法层面的关键字转换为内置函数,允许你像对待普通函数那样使用它——包括将它赋值给变量。但这一操作并不会修改keyword模块的判断逻辑:
keyword.iskeyword('print')返回True、keyword.kwlist包含print,是因为keyword模块是基于Python 2的原始语法关键字集合实现的,它不会因为__future__导入而动态改变自身的判断规则。__future__导入只是在代码编译阶段改变了解释器对print的处理方式,让它不再被当作语句关键字解析,而是作为函数名处理,本质是向前兼容Python 3的过渡手段,并没有彻底修改Python 2的核心语言定义。
这种设计完全符合Python版本过渡的设计逻辑,并非Bug。
内容的提问来源于stack exchange,提问作者Amir reza Riahi
相关产品推荐
相关产品推荐

