Python 数据类型
示例
内置类型
布尔值
bool:True或的布尔值False。逻辑运算,如and,or,not可以针对布尔值进行。
x or y # 如果x为False,则y否则为xx and y # 如果x为False,则x否则为y
not x # 如果x为True,则为False,否则为True
在Python2.x和Python 3.x中,布尔值也是int。该bool类型是一个子int类型,True并且False是其唯一的实例:
issubclass(bool, int) # 真正isinstance(True, bool) # 真正
isinstance(False, bool) # 真正
如果布尔值用于算术运算,则将使用它们的整数值(1和0forTrue和False)返回整数结果:
True + False == 1 # 1 + 0 == 1True * True == 1 # 1 * 1 == 1
号码
int:整数
a = 2
b = 100
c = 123456789
d = 38563846326424324Python中的整数具有任意大小。
注意:在旧版本的Python中,提供了一种long类型,该类型不同于int。两者已经统一。
float:浮点数;精度取决于实现和系统体系结构,对于CPython,float数据类型对应于C double。
a = 2.0
b = 100.e0
c = 123456789.e1complex:复数
a = 2 + 1j
b = 100 + 10j
的<,<=,>和>=运营商将提高一个TypeError当任何操作数是复数例外。
弦乐
Python 3.x 3.0str:一个unicode字符串。的类型'hello'
bytes:一个字节字符串。的类型b'hello'
str:一个字节字符串。的类型'hello'
bytes:的同义词 str
unicode:一个unicode字符串。的类型u'hello'
序列和集合
Python区分有序序列和无序集合(例如set和dict)。
字符串(str,bytes,unicode)是这样的序列
reversed:str具有reversed功能的倒序
a = reversed('hello')
tuple:n任何类型(n >= 0)的值的有序集合。
a = (1, 2, 3)
b = ('a', 1, 'python', (1, 2))
b[2] = 'something else' # 返回TypeError支持索引;一成不变 如果所有成员都是可哈希的,则可哈希
list:n值的有序集合(n >= 0)
a = [1, 2, 3]
b = ['a', 1, 'python', (1, 2), [1, 2]]
b[2] = 'something else' # 允许的不可散列;易变的。
set:唯一值的无序集合。项目必须是可哈希的。
a = {1, 2, 'a'}
dict:唯一键值对的无序集合;键必须是可哈希的。
a = {1: 'one',
2: 'two'}
b = {'a': [1, 2, 3],
'b': 'a string'}
如果对象的哈希值在其生命周期内从未改变(需要一个__hash__()方法),并且可以与其他对象(需要一个__eq__()方法)进行比较,则该对象是可哈希的。比较相等性的可哈希对象必须具有相同的哈希值。
内置常数
结合内置数据类型,内置名称空间中有少量内置常量:
True:内置类型的真实值 bool
False:内置类型的假值 bool
None:用于表示信号不存在的单例对象。
Ellipsis或...:在任何地方的Python3 +核心中使用,在Python2.7 +中作为数组符号的一部分使用有限。numpy并且相关的软件包将其用作数组中的“包括所有内容”的引用。
NotImplemented:用于向Python表示特殊方法不支持特定参数的单例,Python会尝试其他替代方法(如果有)。
a = None #没有值将被分配。以后可以分配任何有效的数据类型Python 3.x 3.0
None没有任何自然顺序。使用排序比较操作符(<,<=,>=,>)不再被支持,将引发TypeError。
Python 2.x 2.7None始终小于任何数字(None < -32计算为True)。
测试变量类型
在python中,我们可以使用内置函数来检查对象的数据类型type。
a = '123'print(type(a))
# Out: <class 'str'>
b = 123
print(type(b))
# Out: <class 'int'>
在条件语句中,可以使用来测试数据类型isinstance。但是,通常不鼓励依赖变量的类型。
i = 7if isinstance(i, int):
i += 1
elif isinstance(i, str):
i = int(i)
i += 1
有关type()和之间的区别的信息,isinstance()请参见:Python中isinstance和类型之间的区别
测试是否属于NoneType:
x = Noneif x is None:
print('Not a surprise, I just defined x as None.')
在数据类型之间转换
您可以执行显式数据类型转换。
例如,“ 123”是str类型,可以使用int函数将其转换为整数。
a = '123'b = int(a)
可以使用float函数从浮点字符串(例如“ 123.456”)进行转换。
a = '123.456'b = float(a)
c = int(a) # ValueError:int()的无效文字,基数为10:“ 123.456”
d = int(b) # 123
您还可以转换序列或集合类型
a = 'hello'list(a) # ['你好']
set(a) # {'o','e','l','h'}
tuple(a) # ('你好')
文字定义时的显式字符串类型
在引号前面有一个字母标签,您可以知道要定义的字符串类型。
b'foo bar':bytes在Python 3中产生结果,str在Python 2中产生结果
u'foo bar':str在Python 3中产生结果,unicode在Python 2中产生结果
'foo bar':结果 str
r'foo bar':结果即所谓的原始字符串,其中无需转义特殊字符,输入时一切都按原样进行
normal = 'foo\nbar' # 富# 酒吧
escaped = 'foo\\nbar' # 富\nbar
raw = r'foo\nbar' # 富\nbar
可变和不可变数据类型
如果可以更改对象,则称为可变对象。例如,当您将列表传递给某个函数时,可以更改列表:
def f(m):m.append(3) #在列表中添加一个数字。这是一个突变。
x = [1, 2]
f(x)
x == [1, 2] # 现在为假,因为已将一项添加到列表中
如果无法以任何方式更改对象,则称为不可变对象。例如,整数是不可变的,因为无法更改它们:
def bar():x = (1, 2)
g(x)
x == (1, 2) # 永远为True,因为没有函数可以更改对象(1、2)
请注意,变量本身是可变的,因此我们可以重新分配变量 x,但这不会更改x先前指向的对象。它只是x指向一个新对象。
实例可变的数据类型称为可变数据类型,对于不可变的对象和数据类型也类似。
不可变数据类型的示例:
int,long,float,complex
str
bytes
tuple
frozenset
可变数据类型的示例:
bytearray
list
set
dict
以上是 Python 数据类型 的全部内容, 来源链接: utcz.com/z/315785.html