时间:2018-11-01
作者:魏文应
一、对象结构
对象的结构有:
id (标识)
type (类型)
value(值)
在 python 中,一切皆对象。
id (标识)
- id 用来标识对象的唯一性。
- 可以通过
id()
函数来获取对象 id ,比如 :id(1)
。 - id 对象由解析器生成,在 CPython 中,id 就是对象的内存地址。
- 对象一旦创建,id 将不可改变。
type (类型)
- 表示当前对象所属类型,比如 int、float、str、bool等。
- 类型决定了对象有哪些功能。
- 通过
type()
函数获取。如type(123)
。 - python 是一门强类型的语言,对象一旦创建类型便不能修改了。
value(值)
- 对象中存储的具体的数据,比如
123
,那么它的值 value 就是 123 。 - 有些值是可变的,有些值是不可变的。
二、对象和变量
变量,保存的是对象的内存地址值,即 id 值,比如 a = 123
,那么,a 这个变量实际保存的是 123
的 id 值,也就是内存地址。
三、类型转换
一个类型的对象,转换成另一个类型的对象。对象类型转换不是改变对象本身的类型,而是 根据当前对象的值创建一个新对象。类型转换有函数有 int()
、float()
、str()
、bool()
。比如:
a = True
a = int(a)
print(a)
打印结果为:
1
上面是将 bool 变量 True 的 value 值,转换为 int 整数类型,同时创建一个新的 int 对象,将转变后的 value 值赋给新对象的 value ,也就是 True -> value=true
到 1 -> value=1
。a 一开始保存的是 True 的地址,后来保存的是 1
的内存地址。
int() 函数转换规则:
- 布尔值:
True -> 1
,False -> 0
。 - 浮点数:直接取整,省略小数点后面的内容。
- 字符串:合法的整数字符串,则保存为整数,比如 a =
123
,这是可以的。如果是 a =12.3
,则会报错。 - 对于其他不可转换为整型的对象,直接抛出异常,比如
a = None
。
float() 函数转换规则:
- 和 int() 函数基本一致,只是整型改为浮点数。
str() 函数转换规则:
- 转换为字符串类型。比如:
a = 123 print('hello' + a) # 这样是错误的,会抛出异常 print('hello' + str(a)) # 这是正确的
bool() 函数转换规则:
- 任何对象都可以转换为布尔值。
- 所有表示 空 的特性的,都会转换成 False ,比如
a = ''
、0
、None
等。
网友评论