变量和基本数据类型

这篇笔记我们介绍Python中的变量概念和基本数据类型。

变量

高级编程语言中,变量是指向一个存储数据的内存区域的标识,Python中我们可以用如下方式定义变量。

i = 1
size = 3.14
name = 'apple'

Python的变量类型是自动推导的,我们无需指明,不过我们也可以主动使用类型标记来增强代码的可读性。

类型标记是Python3.6引入的新特性。类型标记用于帮助静态类型检查器提前发现代码中可能的错误,它在解释器运行阶段不起作用。如果变量使用了类型标记,那么这个变量就只能绑定标记规定的类型。

i: int = 1
size: float = 3.14
name: str = 'apple'

类型标记也可以制定多种数据类型,下面例子中size可以是浮点数或None

size: float | None = None

注意:类型标记不是必须的,Python解释器也不会因为类型标记错误而拒绝执行代码!实际开发中,对于简单的可一眼看出类型的变量声明我们可以不加类型标记,但函数签名等关键位置则强烈推荐添加类型标记!

关于“常量”

大多数编程语言都有常量(不可改变的量)概念,但Python中没有真正的“常量”,但我们可以用Upper Snake Case命名约定某个标识是常量。

MAX_POOL_SIZE = 3
PI = 3.14

基本数据类型

掌握一门编程语言最重要的是先了解它的数据类型,这样我们才能定义变量并用这门语言进行运算,下面介绍Python的数据类型。

int 整数

Python的整数类型类似C中的int类型,可以直接用1100等字面量表示。对于十六进制字面量可以用0x前缀表示,二进制则可以使用0b,八进制则使用0o

a: int = 1
b: int = 0xff
c: int = 0b1010
d: int = 0o123

Python默认支持大数运算,也就是说Python的整数没有范围,当整数值超过C能表示的最大int时,会自动使用大数运算的算法,浮点数也是如此。

float 浮点数

Python支持双精度浮点数(即64位浮点数),支持约15-17位十进制小数位。Python语言中没有单精度浮点数的概念,现代CPU计算单精度浮点数和双精度浮点数的速度没有区别,且双精度浮点数精度更高,一般来说我们都是使用双精度浮点数,Python也仅提供了这一种浮点类型。

a: float = 3.14

不过要注意的是虽然Python语言本体仅支持双精度浮点数,但一些科学计算库支持更多的自定义数据类型,例如底层由C实现的Numpy就支持半精度浮点数float16、单精度浮点数float32、双精度浮点数float64、扩展精度浮点数float128bfloat16等,这些库底层可能使用SIMD指令集甚至GPU等专用硬件,因此并不能一概而论。

另外要注意的是,和大部分其他编程语言一样,使用浮点数要注意精度丢失问题,例如计算0.1 + 0.1 + 0.1 - 0.3得到的结果可能是5.551115123125783e-17,这是因为内存中浮点数是以二进制形式存储数据的,对于某些浮点数存储时就不会是我们定义的精确值。如果用这种结果进行if相等判断结果可能就错了。

bool 布尔类型

布尔值有两个,分别是TrueFalse,布尔值只能用布尔运算符andornot

result: bool = True

None 空值

None表示空值,类似于其他语言的null,Python中None也是一种类型。判断一个变量是否是空值需要使用is运算符,例如if foo is None

size: float | None = None
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap