栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python是强类型的吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python是强类型的吗?

Python是强大的动态类型。

  • 强类型意味着值的类型不会以意外的方式改变。仅包含数字的字符串不会神奇地变成数字,就像Perl中可能发生的那样。类型的每次更改都需要显式转换。
    动态类型意味着运行时对象(值)具有类型,而静态类型则是变量具有类型。
    至于你的例子

bob = 1bob = "bob"

这是可行的,因为变量没有类型;它可以命名任何对象。之后

bob=1
,你会发现
type(bob)
返回
int
,但是之后
bob="bob"
,它将返回
str
。(请注意,这
type
是一个常规函数,因此它将计算其参数,然后返回值的类型。)

与此相比,C的早期方言是弱类型的,静态类型的,因此指针和整数几乎可以互换。(现代ISO C在许多情况下都需要转换,但是默认情况下,我的编译器对此仍然宽容。)

我必须补充一点,强类型vs.弱类型键入更多是一个连续的过程,而不是布尔选择。C ++具有比C强的类型(需要更多的转换),但是可以使用指针强制转换来破坏类型系统。

诸如Python之类的动态语言中类型系统的优势实际上取决于其原语和库函数如何响应不同类型。例如,

+
已重载,因此它可以处理两个数字或两个字符串,但不能处理一个字符串和一个数字。这是在+实施时做出的设计选择,但从语言的语义来看并不是真正的必要。实际上,当你
+
在自定义类型上重载时,可以使其隐式将任何内容转换为数字:

def to_number(x):    """Try to convert x to a number."""    if x is None:        return 0    # more special cases here    else:        return float(x)  # works for numbers and stringsclass Foo(object):    def __add__(self, other):        other = to_number(other)        # now do the addition

(我知道的唯一完全强类型(也称为严格类型)的语言是Haskell,其中类型完全不相交,并且只能通过类型类控制重载。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614595.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号