介绍
Python3中主要的内置类型为:数字、列表、字典、类、实例和异常。
通常使用到的基本数据类型有:
- 数字(
int
、float
、complex
):int
表示整数;float
表示浮点数;complex
表示复数,并用j
或J
表示虚数部分。 - 布尔值(
bool
):实际上bool
是int
的子类型,其只有两种取值(True
和False
),并支持直接与int
类型的变量做运算(True
表示为\(1\),False
表示为\(0\))。 - 文本字符串(
str
):用单引号''或双引号""包围的变量,表示文本。 - 二进制列(
bytes
):属于文本类型的高级数据类型,除了bytes
之外还有bytearray
等类型,一般形式是b''
。 - 列表(
list
、tuple
):被[]
包围的是列表list
,属于可变数据类型;被()
包围的是元组tuple
,属于不可变数据类型。 - 集合(
set
):被{}
包围的若干个数据,其中不能包含重复的元素。 - 字典(
dict
):被{}
包围的若干个数据,但是其中的元素形如a:b
,a
,b
分别是基本数据类型,表示一种映射。在一个字典内,不能存在相同的a
。 - 空值(
NoneType
):只有一个取值None
。 - 其他,例如“类和类的实例”、“异常”等。
可变类型和不可变类型
与Java类似,像int
、float
、bool
、str
、tuple
等类型的数据属于不可变数据类型;list
、set
、dict
属于可变数据类型。
- 不可变数据类型:变量被修改时,内存地址也发生改变;
- 可变数据类型:变量被修改时,直接在内存地址上修改,修改之后内存地址不会发生改变。
可以通过id()
函数获取变量的唯一标识值,以此来表征内存地址。
id(object)
'''
返回对象的“标识值”,在此对象的生命周期中保证是唯一且恒定的。
:param object: 变量。
:rtype: int。
'''
a = 12
print(id(a)) # 140711708867352
a = 3
print(id(a)) # 140711708867064(内存地址被修改)
b = 'str'
print(id(b)) # 140711707721680
b += 'a'
print(id(b)) # 2231534285232(内存地址被修改)
c = ['abcd', 'efg']
print(id(c)) # 2231531657472
c += ['hij']
print(id(c)) # 2231531657472(内存地址未修改)
对于可变数据类型的比较,在已经
获取变量的类型
Python中内置了函数type()
和isinstance()
来获取判断变量的类型。
type(object)
'''
获取变量的数据类型。
:param object: 变量。
:return: 返回object的类型。
'''
# 使用:
print(type(10)) # 输出<class 'int'>
print(type('python')) # 输出<class 'str'>
print(type(True)) # 输出<class 'bool'>
isinstance(object, classinfo)
'''
判断变量的数据类型。
:param object: 变量。
:param classinfo: 类型。
:return: True: object是classinfo或者其子类的实例。
False: object不是给定类型的对象。
'''
# 使用:
print(isinstance('player', str)) # True
print(isinstance(12, int)) # True
print(isinstance(10, float)) # False,说明float与int并无关系。
print(isinstance(True, int)) # True,说明bool是int的子类型。
print(isinstance(True + 1, int)) # True
print(type(True) == int) # False,说明type()函数没有考虑到子类型,因此在判断类型的时候不推荐使用'type() == '的方式。
数字、布尔值以及运算符
布尔取值
None
、False
、任何数值类型的\(0\)(包括0
、0.0
、0j
)、空列表(''
、[]
、{}
、()
、range(0)
)等具有“空/假”意义的变量被判断为False
;其他值为True
。
基本运算
含义 | Python表示 | 数学表示 | 备注 |
---|---|---|---|
加 | a + b |
\(a + b\) | |
减 | a - b |
\(a - b\) | |
乘 | a * b |
\(a \times b\) | |
除 | a / b |
\(a \div b\) | 返回float 类型 |
整数除 | a // b |
\(\lfloor a \div b \rfloor\) | 返回int 类型 |
取余 | a % b |
\(a\ mod\ b\) | |
乘方 | a ** b |
\(a^b\) |
比较运算
比较运算的返回值是bool
类型。
含义 | Python表示 | 含义 | Python表示 |
---|---|---|---|
等于 | a == b |
不等于 | a != b |
小于 | a < b |
大于 | a > b |
小于等于 | a <= b |
大于等于 | a >= b |
赋值运算
含义 | Python表示 | 解释 |
---|---|---|
直接赋值 | a = b |
|
加法赋值 | a += b |
\(a = a + b\) |
减法赋值 | a -= b |
\(a = a - b\) |
乘法赋值 | a *= b |
\(a = a \times b\) |
除法赋值 | a /= b |
\(a = a \div b\),返回float 类型 |
整除赋值 | a //= b |
\(a = \lfloor \frac{a}{b} \rfloor\),返回int 类型 |
取模赋值 | a %= b |
\(a = a\ mod\ b\) |
乘方赋值 | a ** b |
\(a = a ^ b\) |
海象运算 | a := b |
Python3.8新增 |
位运算
含义 | 符号 | 含义 | 符号 |
---|---|---|---|
按位与 | & |
按位或 | | |
按位异或 | ^ |
按位取反 | ~ |
左移 | << |
右移 | >> |
逻辑运算
含义 | Python表示 |
---|---|
与 | a and b |
或 | a or b |
非 | not a |
成员运算
Python表示 | 描述 |
---|---|
in |
如果在指定的序列中找到值返回True ,否则返回False 。 |
not in |
如果在指定的序列中没有找到值返回True ,否则返回False 。 |
10 in [10, 11, 12] # True
10 in ['10', '11', '12'] # False
'a' in ('a', 'b') # True
10 not in range(10) # True
[3] in [[1], [2], [3]] # True
身份运算
Python表示 | 描述 | 解释 |
---|---|---|
is |
判断两个标识符是否引用自同一对象 | x is y ,类似id(x) == id(y) |
is not |
判断两个标识符是否引用自不同对象 | x is not y ,类似id(x) != id(y) |
不推荐对int
、float
、str
类型使用成员运算符,比较关系尽量使用==
运算符。
d1, d2 = [2, 3], [2, 3]
d = d1 is d2
e1 = e2 = [3, 4, 5]
e = e1 is e2
print(d, e, [2, 3] is [2, 3]) # False, True, False
参考成员运算:
a = [3]
b = [[1], [2], [3]]
print(a in b) # True,说明面向列表的in运算并非是按照is运算作为判断标准的。
标签:False,Python,数据类型,int,print,True,id
From: https://www.cnblogs.com/bearpipy/p/18009566