为什么Python允许将int等数据类型名称作为变量使用?
问题背景
举个例子,在Python中你可以将5赋值给名为int的变量,该操作可以正常运行,但在C/C++这类静态类型语言中,是不允许使用数据类型名称作为变量名的。
int = 5 print(int)
运行输出结果为:
5
类似list、tuple、dict这类内置类型的名称,都可以被当做变量名赋值使用。为什么Python不存在该限制?
原因解答
- Python中的
int、list这类名称本质上不是语法层面的保留关键字,只是内置命名空间中默认指向对应类型对象的普通标识符,Python的命名规则没有禁止用户修改这类标识符的指向,所以你可以把它们重新赋值为其他值。 - 而C/C++这类静态类型语言的类型名属于语法保留关键字,是编译器做类型校验、语法解析的特殊标记,本身不属于普通变量的命名空间,所以不允许被当做变量名使用。
- 注意该操作非常不推荐:一旦你覆盖了这类内置标识符的原有指向,后续再想调用原本的内置功能就会报错,比如上述操作完成后调用
int("123")就会抛出类型错误,除非执行del int删除你自定义的同名变量,才能恢复内置int的原有功能。
内容的提问来源于stack exchange,提问作者Mustafa
相关产品推荐
相关产品推荐

