python是动态语言还是静态语言?强类型语言还是弱类型语言

新的理想型社区
  • 首先要清楚静态类型语言和动态类型语言的判别的标准
    定义:如果类型检查发生在编译阶段(compile time),那么是静态类型语言(statically typed languages)中,相反的,如果类型检查发生在运行阶段(run time),那么是动态类型语言(dynamically typed languages)
  • 什么是类型检查
    类型检查就是查看变量的类型,然后判断这个表达式是合理的,可以这么理解:编译器通常在编译阶段做类型检查(java),而解释器通常在运行阶段做类型检查(python)
  • 静态类型(static)语言: 所有的变量类型必须被显示地声明,因为这些信息在编译阶段就被需要。例如,在 Java 中
float f = 0.5  #定义变量必须显示声明类型

动态(Dynamic)语言: 显示声明不被要求,因为类型赋值发生在运行阶段。例如在 Python 中,

f = 0.5 #定义变量不需要显示声明
  • 从上面分析可以知道,python是动态语言(类型检查发生在运行阶段,而且不需要显示声明类型),那么强类型和弱类型的判别标准是什么?
  • 先上概念:强类型语言有更强的类型检查机制,表达式计算中会做严格的类型检查;而弱类型语言允许各种变量类型间做一些运算。
  • 再看实例:
    首先看下什么是强类型,在强类型中,不管在编译时还是运行时,一旦某个类型赋值给某个变量,它会持有这个类型,并且不能同其他类型在计算某个表达式时混合计算。例如在Python中:
data = 5 # 在运行时,data被赋值为整型
data = data + "xiaoming" #报错

然而,在弱类型中,它是很容易与其他类型混合计算的,比如同样一门伟大的语言 Javascript,使用它:

var data = 5
data = data + 'xiaoming' //string和int可以结合,程序正常执行
  • 各种语言按照动态/静态,弱类型/强类型的划分:
    在这里插入图片描述
  • 结论:
    1 类型检查确保一个表达式中的变量类型是合法的。在静态类型语言中,类型检查发生在编译阶段;动态类型语言,类型检查发生在运行阶段。
    2 强类型语言有更强的类型检查机制,表达式计算中会做严格的类型检查;而弱类型语言允许各种变量类型间做一些运算。
    3 Python是一门动态的(dynamic)且强类型(strong)语言
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值