Python是动态类型和强类型,这意味着你不需要申报类型 - 当您绑定对象的名字,他们被扣除。但是类型总是被保留下来,直到你将不同类型的新对象重新绑定到名称('变量')之后才会更改。
你所说的'关键字'只是内置的实用函数,它返回一个对象,所以int()
返回默认整数('0'),str()
返回空字符串。因此,如果你打电话给myvar = int()
,你的python首先创建一个新的整数对象,然后绑定这个对象来命名myvar
在当前的名字范围内。稍后,如果您致电print myvar
,它将检查名称myvar
的当前范围,并将此名称引用的对象传递给print
。
现在,如果您由于某种原因想要使用名称'int'创建一个变量,比如说int = str
,Python允许这样做。但这并不意味着你改名为int
的引用(顺便说一下,Python不允许修改内置类型),你只是将你在程序中使用的名称重新绑定到其他对象。因此,如果您稍后调用othervar = int()
,则会创建绑定到othervar
的新空字符串,但这只会在当前范围内,因为它们具有自己的名称绑定,所以不会更改其他模块如何使用int()
。下面
看代码,看看它是如何工作的:
def int_fn():
return int()
def float_fn():
int = float
return int()
现在来看看什么是返回:
In [26]: int()
Out[26]: 0
In [27]: float()
Out[27]: 0.0
In [28]: int_fn()
Out[28]: 0
In [29]: float_fn()
Out[29]: 0.0
现在关于你的老师说的话。 int()
或str()
确实不是关键字,上面的示例显示它们是任何其他名称。但是,除非你真的,真的知道自己在做什么以及你的行为会产生什么后果(并且可能很难学习),否则你应该把它们当作'保留字'来对待。
他们为什么要成为关键字? –
我认为你的教师的意图是教你避免在你的代码中嵌入阴影。 –
python中没有关键字,只是声明。 'int'不是一个声明,它是一个名称(设计)被默认绑定到int类型。所有名字都可以反弹到其他对象。 –