小编Bob*_*ver的帖子

为什么6个内置常量中有2个可分配?

在关于内置常量(不包括site常量)的文档中,它声明:

注:名称None,False,True并且__debug__不能被重新分配(分配给他们,甚至作为一个属性名称,提高SyntaxError),因此它们可以被认为是"真正的"常数.

如果我没有弄错,TrueFalse在Python 3中成为"真正的"内容.(正如副本中所述.)

问题是,为什么不是另外两个(Ellipsis,NotImplemented)"真实"的含量?是否有一个用例重新分配这些(numpyEllipsis吧?)已经从这种限制豁免呢?

加剧了我的困惑,在标准库类型的文档中,行为EllipsisNotImplemented行为都与类型相同None.即:

  • 他们是单身人士
  • 他们不支持特殊操作.

此问题与建议的副本无关:为什么在Python 3中将True和False更改为关键字.它提出了一些完全不同的东西,即为什么EllipsisNotImplemented 不是"真正的"常数,不是为什么TrueFalse哪里变成了一些.

python constants python-3.x

10
推荐指数
1
解决办法
360
查看次数

为什么非空槽不能与 int、tuple、bytes 子类一起使用?

参考手册中明确记录了这一点:

\n
\n

非空 _ slot _ 不适用于从 \xe2\x80\x9cvariable-length\xe2\x80\x9d 内置类型(例如 int、bytes 和 tuple)派生的类。

\n
\n

情况确实如此,写道:

\n
class MyInt(int):\n    __slots__ = 'spam',\n
Run Code Online (Sandbox Code Playgroud)\n

结果是:

\n
TypeError: nonempty __slots__ not supported for subtype of 'int'\n
Run Code Online (Sandbox Code Playgroud)\n

这是为什么呢?为什么空槽可以使用但非空槽禁止使用?

\n

python class slots python-3.x

6
推荐指数
1
解决办法
1287
查看次数

为什么__debug__不是关键字列表中的关键字?

__debug__是一个内置常量,根据常量文档,它似乎不是一个实现细节.

尝试分配给它时(文档状态不支持),将显示以下错误消息:

>>> __debug__ = False
  File "<stdin>", line 1
SyntaxError: assignment to keyword
Run Code Online (Sandbox Code Playgroud)

显然,根据消息,它是一个关键字,但是:

>>> from keyword import kwlist
>>> '__debug__' in kwlist
False
Run Code Online (Sandbox Code Playgroud)

这似乎很奇怪.None,True并且False,也列为常量,包含在kwlist.

为什么不在__debug__关键字列表中?

python keyword python-internals

4
推荐指数
1
解决办法
239
查看次数

进口package.submodule有什么好处?

使用numpy作为一个例子,我似乎无法实现什么做这样一个进口的好处将做到:

import numpy.lib
Run Code Online (Sandbox Code Playgroud)

导入完成后,numpy可以作为名称使用,相当于直接导入它:

import numpy
Run Code Online (Sandbox Code Playgroud)

这两种情况下,您lib只能使用虚线访问来访问子模块:

>>> numpy.lib
<module 'numpy.lib' from ....>
Run Code Online (Sandbox Code Playgroud)

是否存在做import numpy.lib有益的情况?

python import packages python-import

2
推荐指数
1
解决办法
65
查看次数