您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python是一种弱类型的语言,因为变量可以切换类型吗?

Python是一种弱类型的语言,因为变量可以切换类型吗?

您的示例演示了 动态 键入,而不是弱类型。动态类型化通常意味着对象可以存储的数据类型是可变的。任何目标都可以绑定到任何种类的对象。可以将它与静态类型为[*]的C#进行对比。

int i = 5; // Okay.
i = "5";   // Illegal! i can only hold integers.

强类型化意味着一旦分配了特定种类的值,对象就应遵循严格的规则,即它们如何与各种类型的其他对象进行交互。弱打字意味着这些规则更加宽松。这并不意味着强类型语言必须在任何方面都具有优势。这只是一种语言设计选择。

Python被认为是强类型的,因为对象对它们的类??型有不同的概念。对象之间不兼容的操作会导致错误

>>> 1 + 1          # Add two integers.
2
>>> "1" + "1"      # Concatenate two strings.
'11'
>>> 1 + int("1")   # Add two integers.
2
>>> "1" + str(1)   # Concatenate two strings.
'11'
>>> 1 + "1"        # Undefined! Adding integers and strings is meaningless.
Traceback (most recent call last):
  File "", line 5, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'

但是在PHP中,规则对可接受的内容要宽松得多。因此,它被认为比某些其他语言更弱类型。

$x = 1 + "1"; // x is 2

[*]从技术上讲,从C#4开始,由于使用了dynamic关键字,C#是静态类型的,但是在每个绑定的基础上可以选择启用动态类型。如今,许多语言都在增加动态功能并模糊了界限,因此越来越难说“语言X是动态的”和“语言Y是静态的”。它不是二进制属性,而是更多的是滑动标度或频谱。

python 2022/1/1 18:46:37 有421人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶