Python之变量

127 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情

总概

Python中变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。变量不存在需要声明类型,属于弱类型,具体类型在赋值之后才知道,属于动态类型语言。

下面分别来静态语言和动态语言,没有好与坏,适用于不同场景。比如静态语言更适合结构化数据场景,动态语言适合非结构化场景,所以大数据、AI使用Python的比较多。

动态语言

在运行时确定数据类型,变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。所以在使用前必须赋值。

静态语言

在编译时变量的类型就能确定,多数静态语言要求在使用变量之前必须声明数据类型。

java

必须在声明变量的时候就声明类型。不要求声明的时候就赋值,局部变量只有要用的时候才需要你去赋值(不然编译不过),类成员才有默认值,但是默认值有时候容易出现歧义,所以DTO的规范是用封装类型不建议使用基础类型。

关于局部变量没有默认值,但是类成员变量有,笔者的理解是局部变量后面肯定会被用到才去声明变量,所以没有默认值这样不容易产生歧义,但是既然后面会用到为啥不强制让编写者去赋值,不然后面还要处理没有赋值的情况(比如if else if 但是没有else)。

go

go也需要声明类型,但是支持类型推断,如果直接赋值可以不用声明类型,这点比java方便,特别是函数内的短变量声明:=

go的局部变量、结构体变量、全局变量都允许有默认值,比较方便。

虽然笔者主Java开发,但是认为这点go更加灵活。

变量

变量名必须是大小写英文、数字和_的组合,且不能用数字开头。

if __name__ == '__main__':
    var = 1
    var = 1.01
    var = True
    var = "fff"

常量

Python没有和java或者go类似的常量,全部用大写的变量名只是一个习惯的用法。

if __name__ == '__main__':
    PI = 3.14159265359
    PI = 3.14

参考

静态语言和动态语言的区别