变量的类型转化
可以执行显式数据类型转换。例如,’123’是str类型的,它可以使用int函数转换为整数。
a ='123'
b =int(a)
可以使用float函数从浮点字符串(如’123.456′)进行转换
a ='123.456'
b =float(a)
还可以转换序列或集合类型
a ='hello'
list(a)
# ['h', 'e', 'l', 'l', 'o']
set(a)
# {'o', 'e', 'l', 'h'}
tuple(a)
# ('h', 'e', 'l', 'l', 'o')
在定义变量时可显式的指定string字串的子类型
可以 在引号前面加一个字母标签,定义具体是什么类型的字符串
b’foo bar’: 在python3中返回 byte型,在python2中返回 str 型
u’foo bar’ : 在python3中返回 str型,在python2中返回 unicode 型
"foo bar’ : 都返回 str型
r’foo bar’: 原始字符串,其中无需转义特殊字符,键入时一切都按原样
可变和不可变的数据类型
如果一个对象可以改变值,那么它就叫做可变数据类型。
例如,当你将一个列表传递给某个函数时,该列表可以被函数内的代码改变
def f(m):
m.append(3) # 向列表中添加一个数字。这是一个修改.
x = [1, 2]
f(x)
x == [1, 2] # 现在为False,因为列表中添加了一个项
如果对象不能以任何方式更改,则称其为不可变的。例如,整数是不可变的,因为没有办法改变它们
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