int 不是关键字,如果我们将它用作变量会怎样?
Int is not a keyword, What happens if we use it as a variable?
Int 不是 python 中的关键字,因此可以用作变量名。
我尝试将字符串分配到名称中并且成功了。
我是在 Python3.8.2
的 IDLE 中完成的
>>> a = int(4.5)
>>> print(a)
4
>>> int = 'abc'
>>> print(int)
abc
>>> b = int(5.7)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
b = int(5.7)
TypeError: 'str' object is not callable
>>> print(b)
代码在没有最后一部分的情况下也能工作。
即来自 b = int(5.7)
为什么会这样?
int 不应该是关键字吗?
我们如何才能修复它,使现有代码完好无损,就像在控制台中工作一样?
我尝试使用 del 关键字,它起作用了。但我不知道为什么。
>>> del int
>>> b = int(5.7)
>>> print(b)
5
这有效。
请说明。 :)
None个基本类型是关键字,它们是类型对象
>>> type(int)
<class 'type'>
并且他们在使用时创建 class 的实例
>>> type(int('100'))
<class 'int'>
它们的工作方式与 class你自己定义的一样
>>> class Foo:
... pass
...
>>> type(Foo)
<class 'type'>
>>> type(Foo())
<class '__main__.Foo'>
唯一的区别是它们在 "builtins" 命名空间中,但是由于 python 的作用域规则,"builtins" 最后检查。您创建的任何变量都在内置函数之前检查的命名空间中,因此隐藏了内置函数本身。
至于为什么,python 中的几乎所有内容都是第一个 class 对象,它们都遵循相同的规则。 int
没有特殊代码或任何特殊规则(除了它的实现)——它的工作方式与任何其他 class.
相同
命名空间是分层的,主要是内置 --> 模块 --> 本地意味着本地阴影模块隐藏内置。 del
从命名空间中删除一个变量,从而删除该影子。如果您创建了一个名为 int
的变量,然后 del int
,python 将不再在本地名称空间中找到它,并将回退到原始变量。
当然,如果你愿意,你总是可以在更永久的基础上把事情搞砸:
>>> __builtins__.__dict__['int'] = float
>>> int(1)
1.0
Int 不是 python 中的关键字,因此可以用作变量名。 我尝试将字符串分配到名称中并且成功了。
我是在 Python3.8.2
的 IDLE 中完成的>>> a = int(4.5)
>>> print(a)
4
>>> int = 'abc'
>>> print(int)
abc
>>> b = int(5.7)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
b = int(5.7)
TypeError: 'str' object is not callable
>>> print(b)
代码在没有最后一部分的情况下也能工作。 即来自 b = int(5.7)
为什么会这样? int 不应该是关键字吗? 我们如何才能修复它,使现有代码完好无损,就像在控制台中工作一样?
我尝试使用 del 关键字,它起作用了。但我不知道为什么。
>>> del int
>>> b = int(5.7)
>>> print(b)
5
这有效。
请说明。 :)
None个基本类型是关键字,它们是类型对象
>>> type(int)
<class 'type'>
并且他们在使用时创建 class 的实例
>>> type(int('100'))
<class 'int'>
它们的工作方式与 class你自己定义的一样
>>> class Foo:
... pass
...
>>> type(Foo)
<class 'type'>
>>> type(Foo())
<class '__main__.Foo'>
唯一的区别是它们在 "builtins" 命名空间中,但是由于 python 的作用域规则,"builtins" 最后检查。您创建的任何变量都在内置函数之前检查的命名空间中,因此隐藏了内置函数本身。
至于为什么,python 中的几乎所有内容都是第一个 class 对象,它们都遵循相同的规则。 int
没有特殊代码或任何特殊规则(除了它的实现)——它的工作方式与任何其他 class.
命名空间是分层的,主要是内置 --> 模块 --> 本地意味着本地阴影模块隐藏内置。 del
从命名空间中删除一个变量,从而删除该影子。如果您创建了一个名为 int
的变量,然后 del int
,python 将不再在本地名称空间中找到它,并将回退到原始变量。
当然,如果你愿意,你总是可以在更永久的基础上把事情搞砸:
>>> __builtins__.__dict__['int'] = float
>>> int(1)
1.0