今天,我在别人的代码中发现了以下构造:

try: True, False
except NameError: True = 1==1; False = 1==0

据我所知,它定义了TrueFalse,如果它们还没有定义的话.所以如果定义了它们,就不应该抛出NameError异常,对吗?

我在一个贝壳里试过这个,结果显示我有SyntaxError: can't assign to keyword

我的问题是,如果定义了True和False,为什么它甚至会抛出语法错误?如果我的系统上有True和False,它不应该只经过异常处理而不显示语法错误吗?

推荐答案

这段代码是为Python 2编写的.而在Python3上不起作用.x(其中TrueFalse是真关键字).

因为在Python3中,TrueFalse是关键字,所以你会得到SyntaxError,这是你抓不到的.

这段代码之所以存在,是因为Python的版本非常旧.在Python 2.2(2001年发布!)中,TrueFalse不作为预定义的名称存在,所以这段代码将提供兼容的定义,以便以后的代码可以简单地使用TrueFalse.

在转换Python 2时.Python 3的x代码.x、 go 掉这些线;它们是历史性的,在Python 3中没有用处.x、 如果您在其他人的代码中看到这些行,它们肯定表明该程序不是为Python 3编写或移植的.

Python-3.x相关问答推荐

模型中的__str__方法在Django管理面板中生成大量重复查询

在多个测试中维护和报告变量

在Python代码中包含NAN值时,以两个矩阵计算RMSE

在 sum() 中将字符串转换为 int (或 float)

以某种方式分割字符串

requests.exceptions.InvalidSchema:未找到连接适配器.我试图遍历一个列表

隐藏Cartopy中高纬度非矩形投影的右侧轴(纬度)标签

如何转置和 Pandas DataFrame 并命名新列?

使用 OpenCV 从图像中减go 一条线

为什么 Python 枚举中的可变值是同一个对象?

python中两个连续的yield语句如何工作?

将变量传递给 Google Cloud 函数

python中是否有大于但小于函数?

Visual Studio Code 中的 Python 3.x 类型提示

在 sklearn.decomposition.PCA 中,为什么 components_ 是负数?

如何从同一文件夹中的模块导入功能?

Python 类型提示语法如何/为什么起作用?

如何在继承的数据类中创建可选字段?

map 对象不是 JSON 可序列化的

Python 3中星型导入的函数形式是什么