Python的基本数据类型
摘自【深入python3】
布尔类型
1.概念
布尔类型的类型符号是 bool ,
因此创建的布尔变量名字不要起这个名字,虽然不会报错
如同他 bool = True 这样的变量声明不要有,因为会覆盖了bool,使得一些bool本身的方法使用不了
Python中有两个布尔类型 常量 : True 和 False
2.运算
这两个布尔值可以被当做整数对待: True=1 , False=0
3 注意
浮点数 0.0也算作是假的
分数的情况,如果分子为0的分数也是假的
其他还要几种情况,这里不记录了
只要记住每一种类型都会定义类似 0 的 值 来表示起点
这些类似被定义为 类0 值的 都是假的
数值类型
1.概念
整数的类型是 int
浮点数的类型是 float
因此创建的整数变量和浮点数变量 名字 不要覆盖了 这两个符号,愿意和上面的布尔类型相同
2.识别区分
python同时支持 整形和浮点型数值
python通过是否有小数点来区分他们
int+int=int
int+float = float
整数可以任意大(为什么python的整数可以任意大呢)
python2中对int 和long采用不同的数据类型
但是python3只有一种整数类型
3.数值转换
可以使用 int()来进行值的转换,int是朝着 0 的方向进行取整的
也可以用 float()进行值的转换,浮点数精确到小数点后15 位
4.运算
1. 普通的 + - * / 运算
其中 + - * 保持了封闭性, int 上的运算结果还是int , float上的运算结果仍然是flaot
但是 / 运算,除法运算执行浮点除法,即便 分子和分母都是int 也是执行这个浮点除法的,结果都是 float
2. // 取整运算
//也是除法运算,但是运算的结果是 取整的 , 分为 int 的 和float 的
遵循向左取整的规则,方向是按照数轴的方向
找 / 法运算在数轴左边的数字 就是 //的运算结果
如果分子分母都是 float 也是取整之后变成 float
3 **运算
该运算表示 乘方的意思
a**n
这个运算是不支持字符串的
但是注意字符串是可以使用 *2 来进行重复的
4 % 运算
表示取余数
5浮点数的运算结果
带有小数点的数字就是浮点数,但是结果的位数呢有时候不是我们想要的
0.1+0.1的结果是0.2
但是0.2+0.1的结果呢?
6.数字和字符拼接
目前我们先和Java保持一致,字符串用""来表示
Java中字符串和数字用+ 拼接可以转化为字符串
但是Python不会,如 3+"2"
会报这个 TypeError 的
TypeError: Can't convert 'int' object to str implicitly
数字要转化为字符串要使用 str() 函数进行,这个再后面的字符串里面详见
分数
1.概念
分数需要一个模块来支撑,模块是啥,目前你可以类比成Java的一个包或者是C的一个头文件,里面封装着其他我们需要的
和Java一样,这种东西要使用需要进行导入的,而且都是 import 语句
python的 分数使用的是 fractions 模块,使用的时候 需要导入 如 import fractions
该模块中定义一个分数的类,通过调用构造函数可以定义一个分数
目前记住 模块的使用 方法是 : 模块名.属性
模块里面的属性可以是 类,可以是函数,变量甚至子模块
math模块支持数学
例如 π , 三角函数等东西需要math模块的支持
同样这个模块需要导入 import math
math.pi
math.sin()
math.cos()
math.tan()
type()函数和isinstance()函数
目前为止已经接触了好几个类型了,我们如何得知类型呢?使用type()函数即可
type函数可以知道这个类型的 字符串值
isinstance函数接收两个参数,一个是检测值,一个是类型
判断检测值是否为给定的类型
可以看到: int 的类型是 int
float的类型是 float
bool的类型是 bool
复数
复数不需要引入模块,我们数学中 的 a+bi 定义的复数,在python中 虚数单位使用 j
因此可以直接定义一个复数,如 2+3j
Python支持运算表达式
python的算数表达式支持运算顺序的
进制
下面是进制的格式符号
十进制 decimal %d
八进制 octal %o
十六进制 hexadecimal %x
None
None 是 python的一个特殊的常量。它也是一个空值,但是它和False不同
None 是唯一的空值,它的数据类型是 NoneType。但是要注意None是一个常量
因此 可以将 None 赋给任何的变量,但是不能将 其他值赋给None