在Python2中,将它们设置为关键字而不是文字,或者将它们设置为特殊的大小写,比如none
,是否有性能优势或其他原因?
可能是因为Python 2.6不仅允许true=false
,还允许您说一些有趣的事情,比如:
__builtin__.True = False
这会将整个进程的true
重置为false
。它会导致非常有趣的事情发生:
>>> import __builtin__
>>> __builtin__.True = False
>>> True
False
>>> False
False
>>> __builtin__.False = True
>>> True
False
>>> False
False
编辑:正如Mike指出的,Python wiki还在核心语言更改下声明了以下内容:
问题内容: 在Python 2中,我们可以重新分配和(但不包括),但所有这三个(,,和)被认为是内置变量。然而,在Py3k所有三个分别更改为关键字按该文档。 根据我自己的推测,我只能猜测这是为了防止这种源自旧恶作剧的恶作剧。但是,在Python 2.7.5中,以及之前的版本中,诸如reassigned的语句将引发。 在语义上,我不相信,和是关键字,因为它们最终在语义上是文字,这是Java所做的。我
问题内容: MDC对操作员的描述如下: 如果两个操作数的类型不同,则JavaScript会转换操作数,然后进行严格比较。如果操作数是数字或布尔值,则在可能的情况下将操作数转换为数字;否则,操作数将转换为数字。否则,如果其中一个操作数是字符串,则另一个操作数将尽可能转换为字符串。 考虑到这一点,我将评估如下: 它们是同一类型吗? 没有 操作数是数字还是布尔值? 是 我们可以将它们都转换为数字吗? 否
问题内容: 使用括号时,这些语句为什么能按预期工作: 但是 ,如果没有括号,它会返回吗? 问题答案: 基于有关操作符优先级的python 文档 : 请注意,比较,成员资格测试和身份测试均具有相同的优先级,并且具有“比较”部分中所述的从左到右的 链接 功能。 因此,实际上您有一个链接语句,如下所示: 您可以假定中心对象将在2个操作和其他对象之间共享(在这种情况下为False)。 并且请注意,对于所有
问题内容: 如果我这样做: 那又回来了。仅仅是因为在列表中。 但是,如果我这样做: 那又回来了。而等于: 为什么? 问题答案: 运算符优先级 2.x,3.x。的优先级低于的优先级。因此,它等效于: 这就是你想要的: 正如@Ben指出的那样:建议从不写作,更喜欢。前者使它看起来像一个函数调用,而它却是一个运算符,而不是一个函数。
问题内容: 题 对于扫描仪对象,该方法返回true,而该方法返回false的结果又如何呢? 注意:根据输入文件,该方法将按预期返回结果。在似乎没有被返回正确的结果。 码 这是我正在运行的创建以下结果的代码: 输入文件 以下是我传递给此扫描仪的文件的实际内容: 结果 以下是我运行代码时控制台中显示的内容的结尾,其中包括我无法理解的部分: 问题答案: 文件末尾有一个额外的换行符。 检查缓冲区中是否还有
为什么当使用括号时,这些语句会像预期的那样工作: 但是当没有括号时,它返回?