在说数据类型之前我们简单来说一下对象
Python 使用对象模型来存储数据,构造任何类型的值都是一个对象。
所有的python 对象都拥有三个特性:身份,类型和值。
身份:每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()得到,这个值可以被认为是该对象的内存地址。
类型:对象的类型决定了譔对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则,可以使用内建函数type()查看python对象的类型,因为在python中类型也是对象。
值:对象表示的数据项。
上面三个特性在对象创建时被赋值,除了值,其他两个特性都是只读的。
摘抄一张图来说明这个
数据类型:
一个程序要运行,就要先描述算法,描述一个算法应先说明算法中要用的数据,数据以变量或常量的形式来描述,每个变量或常量都有数据类型,python 基本数据类型有5种:整型(int)、浮点型(float)、字符型(str)、布尔型(bool)、空值(None)
整型:python 有几种整型类型,布尔类型是只有两个值的整型,常规整型是绝大数现代系统都能识别的整型,python 也有长整型类型;
布尔型:该类型只有两个值,也就是布尔值True和布尔值False
标准整型:python 的标准整型类型是通用的数字类型,在大多数32的位机器上,标准整型类型的取值范围是-2的31次方至2的32次方减1,也就是-2147483648 ~ 2147483647
Python 也支持八进制或十六进制来表示整型。
浮点型:python 中的浮点型类似C 语言中的double类型,可以直接用十进制或科学计数方法表示,第个浮点数占8个字节(64位),浮点型通常都有一个小数点和一个可选的后缀e,在e和指数之间可以用正或负表示指数的正负.
字符串:字符串是以’’ 或”” 括起来的任意文本,例如’abc’ 或“abc”
空值:空值是python里一个特殊的值,用None表示
这里提一下python的运算符,和其他语言一样,python也支持各种各样的数学与逻辑运算;
Python支持的操作符有以下几种类型
1:算术运算符
2:比较运算符(关系)
3:赋值运算符
4:逻辑运算符
5:位运算符
6:成员操作符
7:标识操作符
算术运算符
假设变量a持有10和变量b持有20,则
操作符 |
描述符 |
例子 |
+ |
加法 - 对操作符的两侧增加值 |
a + b = 30 |
- |
减法 - 减去从左侧操作数右侧操作数 |
a - b = -10 |
* |
乘法 - 相乘的运算符两侧的值 |
a * b = 200 |
/ |
除 - 由右侧操作数除以左侧操作数 |
b / a = 2 |
% |
模 - 由右侧操作数和余返回除以左侧操作数 |
b % a = 0 |
** |
指数- 执行对操作指数(幂)的计算 |
a**b = 10 的幂 20 |
// |
地板除 - 操作数的除法,其中结果是将小数点后的位数被除去的商。 |
9//2 = 4 而 9.0//2.0 = 4.0 |
比较操作符
假设变量a持有10和变量b持有20,则:
运算符 |
描述 |
示例 |
== |
检查,两个操作数的值是否相等,如果是则条件变为真。 |
(a == b) 不为 true. |
!= |
检查两个操作数的值是否相等,如果值不相等,则条件变为真。 |
(a != b) 为 true. |
<> |
检查两个操作数的值是否相等,如果值不相等,则条件变为真。 |
(a <> b) 为 true。这个类似于 != 运算符 |
> |
检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 |
(a > b) 不为 true. |
< |
检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 |
(a < b) 为 true. |
>= |
检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 |
(a >= b) 不为 true. |
<= |
检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 |
(a <= b) 为 true. |
赋值运算符
假设变量持有10和变量b持有20,则:
运算符 |
描述 |
示例 |
= |
简单的赋值运算符,赋值从右侧操作数左侧操作数 |
c = a + b将指定的值 a + b 到 c |
+= |
加法AND赋值操作符,它增加了右操作数左操作数和结果赋给左操作数 |
c += a 相当于 c = c + a |
-= |
减AND赋值操作符,它减去右边的操作数从左边操作数,并将结果赋给左操作数 |
c -= a 相当于 c = c - a |
*= |
乘法AND赋值操作符,它乘以右边的操作数与左操作数,并将结果赋给左操作数 |
c *= a 相当于 c = c * a |
/= |
除法AND赋值操作符,它把左操作数与正确的操作数,并将结果赋给左操作数 |
c /= a 相当于= c / a |
%= |
模量AND赋值操作符,它需要使用两个操作数的模量和分配结果左操作数 |
c %= a is equivalent to c = c % a |
**= |
指数AND赋值运算符,执行指数(功率)计算操作符和赋值给左操作数 |
c **= a 相当于 c = c ** a |
//= |
地板除,并分配一个值,执行地板除对操作和赋值给左操作数 |
c //= a 相当于 c = c // a |
位运算符
位运算符作用于位和位操作执行位。假设,如果a =60;且b =13;现在以二进制格式它们将如下:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
操作符 |
描述 |
示例 |
& |
二进制和复制操作了一下,结果,如果它存在于两个操作数。 |
(a & b) = 12 即 0000 1100 |
| |
二进制或复制操作了一个比特,如果它存在一个操作数中。 |
(a | b) = 61 即 0011 1101 |
^ |
二进制异或运算符的副本,如果它被设置在一个操作数而不是两个比特。 |
(a ^ b) = 49 即 0011 0001 |
~ |
二进制的补运算符是一元的,并有“翻转”位的效果。 |
(~a ) = -61 即 1100 0011以2的补码形式由于带符号二进制数。 |
<< |
二进位向左移位运算符。左操作数的值左移由右操作数指定的位数。 |
a << 2 = 240 即 1111 0000 |
>> |
二进位向右移位运算符。左操作数的值是由右操作数指定的位数向右移动。 |
a >> 2 = 15 即 0000 1111 |
逻辑运算符
假设变量a持有10和变量b持有20则
运算符 |
描述 |
示例 |
and |
所谓逻辑与运算符。如果两个操作数都是真的,那么则条件成立。 |
(a and b) 为 true. |
or |
所谓逻辑OR运算符。如果有两个操作数都是非零然后再条件变为真。 |
(a or b) 为 true. |
not |
所谓逻辑非运算符。用于反转操作数的逻辑状态。如果一个条件为真,则逻辑非运算符将返回false。 |
not(a and b) 为 false. |
成员运算符
除了前面讨论的运算符,Python成员运算符,在一个序列中成员资格的测试,如字符串,列表或元组。有两个成员运算符解释如下:
操作符 |
描述 |
示例 |
in |
计算结果为true,如果它在指定找到变量的顺序,否则false。 |
x在y中,在这里产生一个1,如果x是序列y的成员。 |
not in |
计算结果为true,如果它不找到在指定的变量顺序,否则为false。 |
x不在y中,这里产生结果不为1,如果x不是序列y的成员。 |
成员运算符
标识符比较两个对象的内存位置。两个运算符标识解释如下:
运算符 |
描述 |
例子 |
is |
计算结果为true,如果操作符两侧的变量指向相同的对象,否则为false。 |
x是y,这里结果是1,如果id(x)的值为id(y)。 |
is not |
计算结果为false,如果两侧的变量操作符指向相同的对象,否则为true。 |
x不为y,这里结果不是1,当id(x)不等于id(y)。 |
运算符优先级
运算符 |
描述 |
** |
幂(提高到指数) |
~ + - |
补码,一元加号和减号(方法名的最后两个+@和 - @) |
* / % // |
乘,除,取模和地板除 |
+ - |
加法和减法 |
>> << |
左,右按位转移 |
& |
位'AND' |
^ | |
按位异'或`'和定期`或' |
<= < > >= |
比较运算符 |
<> == != |
等式运算符 |
= %= /= //= -= += *= **= |
赋值运算符 |
is is not |
标识运算符 |
in not in |
成员运算符 |
not or and |
逻辑运算符 |