1.对象类型
1.1变量
- 指向对象的一个引用,实质上是到对象内存空间的一个指针
- 总是连接到对象(而不是其他变量):
>>> a = 12
>>> b = a
(a相当于内存空间中的指针,指向的是对象数字12)
(b指向的是对象数字12,而不是变量a)
- 无需声明,在第一次赋值时被创建,在表达式中被替换为它们指向的值
a=12赋值过程:
- 创建变量a
- 创建一个对象(分配一块内存),来存储值12
- 将变量与对象,通过指针连接起来,从变量到对象的连接称之为引用(变量引用对象)
- 注:变量在表达式中使用前必须已经被赋值
- 赋值生成引用(而不是拷贝)
- is测试:只有指向同一内存地址(严格意义上相等)的两个变量才会返回True
运行如下代码,查看返回结果,就能理解上面这段话:
a = 12
b = a
a is b
-
变量命名规则:
- 变量名必须是英文大小写、数字和的
_
组合 - 不能以数字开头
- 不能是关键字(内置函数名,如:
print
)
- 变量名必须是英文大小写、数字和的
1.2动态类型
- 类型的概念存在于对象中,而不是变量中
- 多态:一个操作的意义取决于被操作的对象
1.3 自动内存管理
- 最后一次引用对象后,该对象占用的内存空间会被自动回收
- 1.小的整数和字符串会被缓存复用
-
2.可以通过sys.getrefcount查询对象被引用的次
变量.png
我们多次运行了两个不同的常量表达式,发现两个值相等并没有变换,证明python中有缓存机制。
2.数字(不可变对象)
2.1数字类型
- 整型:一般的Python整数在内部以C语言的长整型来实现(32位)
- 长整型:数值超过32位时,自动变为长整型,Python中以“l”或“L”结尾
- Python3.0后,整型与长整型合并为整数类型int
- 浮点数:以C语言的“双精度浮点型”来实现
- 进制:八进制以0o开头,十六进制以0x开头
int_num = 20
float_num = 2.3
oct = 0o65
hex = 0x45
print(type(int_num), type(float_num),oct,hex) # type():查看类型的方法。
返回
<class 'int'> <class 'float'> 53 69
2.2 运算操作
- 一般的数学运算:+、-、
*
、/、**
(乘方)
>>> 1+2
3
>>> 3-5
-2
>>> 2*2
4
>>> 9/6
1.5
>>> 2**2
4
- 进制转换(转为字符串):oct(64), hex(64)
>>> oct(63) # 63转化为8进制
'0o77'
>>> hex(63) # 63转化为16进制
'0x3f'
- 比较运算:==,!=,<, <=, >, >=
>>> 2==3 # 恒等于
False
>>> 2!=3 # 不等于
True
>>> 2<3
True
>>> 2>3
False
- 常用运算:int、float、round、abs、sum、pow、max、min
>>> int(5.9) #将任意类型,转化为整型
5
>>> float('5') #将任意类型,转化为浮点型
5.0
>>> round(18.465546, 2) #传入两个参数,保留小数位数
18.47
>>> abs(-99) #取绝对值
99
>>> sum([1,2,3],2) # 列表计算总和后再加 2
8
>>> pow(2,3) # 返回x的y次方
8
- 高级数学工具:通过导入Python内置库math,调用其中函数实现
网友评论