
python使用对象(object)模型储存数据,因此所构造的任何数据类型都以对象的形式存在。python内置的4种最基本的数据类型,包括:
python中的一切都是对象。对象具有三个特征:
###对象身份的比较
foo1 = foo2 = 4.3
这条语句的实质是:一个值为4.3的·数字对象被创建,foo1和foo2这两个变量名字共同指向了此对象(变量仅仅是一个名字,是对对象的引用而不是对象本身)即foo1和foo2是同一个对象的两个引用:即foo1和foo2是同一个对象的两个引用
foo1 = 4.3 foo2 = foo1
第一句话使得值为4.3的数字对象被创建,然后其引用被赋值给foo1,第二句话使得foo2借助foo1同样指向了值为4.3的对象,这里和上一个例子实质是相同的
foo2 = 1.3 + 3
值为1.3的数字对象和值为3的数字对象被创建,相加后,得到一个新的值为4.3的对象 (此对象与上面代码中的值4.3对象不是同一个!),然后foo2指向了这个新对象。
当两个值相同的,身份不同(变量名相同)被创建,可以用 id() 返回的对象的地址来判断两个对象是否指向同一个地址
foo1 = foo2 = 4.3 id(foo1) == id(foo2) #返回值为True bar1 = 4.3 bar2 = 4.3 id(bar1) == id(bar2) #返回值为False
当然也可以用is 和 is not操作符来判别身份的最佳方式:
foo1 = foo2 = 4.3 foo1 is foo2 # 返回True foo1 is not foo2 # 返回False
*小整型量通常会在程序代码中频繁使用,为了提升效率,Python会对**-5~256*的整型对象进行缓存,即不会重复创建。
但是我们可以明显的发现当出现258 is 258 时,返回值还是true 任何一个对象都有一个内部的计数器,记录着其引用的数量, 当引用为0时,该对象就会被系统给收回,这就是Python进行自主内存管理的基本原理之一。
a = 4 b = 4 a is b # true 257 is 257 #True c = 1000 d = 1000 c is d # false
我们可以利用type()返回对象类型:
type(4) #int
type(4.0) #float
type('abc') #str
# type()返回的不是字符串而是类型对象
type('abc').__name__ #返回‘str’,__name__是返回对象的属性
type(type('abc')) #返回type,python的内建函数
可以用isinstance()来检查一个对象是否是某类型使用的对象
isinstance(num, (int, float, complex)):
判断前边的num是否是(int, float, complex)中的一种;complex为复数
变量名(标志符):
命名规范:
数字可以直接访问,是不可更改且不可分割的原子类型。不可更改数字值的实质是新对象的创建。python本身支持整数和浮点数,其整数类型可以储存任意大小的整数(所能表达的数字范围和计算机的虚拟内存大小有关),这使得python十分适合大数的计算
布尔型True和false
布尔运行算符:not、and、or(优先级由低到高)
复数语法:real + imag j
用conjugate()可以获得其共轭复数
a_complex = 3.5 + 2.9j a_complex.conjugate() # 返回(3.5-2.9j)删除对象
del an_int
删除对象时只是删除了对象的引用,而不是删除了对象本身(相当于使对象内部计数器的值减少1),这时an_int不引用任何对象。对象本身的删除是由python内部的内存管理功能进行的
除法1 / 2 # 0.5 1.0 / 2 # 0.5 1.0 // 2 # 0.0 9 / 5 # 1.8 9 // 5 # 1基数
除了十进制外,python还支持以下三种类型的数字:
将整数转成相应进制的字符串
value = 65 bin(value) #'0b1000001' oct(value) #'0o101' hex(value) #'0x41'类型转换
两个不同类型的数字对象进行运算时,python就要对其中一个进行强制类型转换,继而进行运算,这个道理和C语言中的自动转化是相似的**。基本规则:整型转化为浮点型,非复数转化为复数。总而言之:简单类型向复杂类型转换,不精确类型向更精确类型转换**
功能函数abs():返回绝对值,如果参数是整型,返回整型,如果是浮点型,返回浮点类型,同样也可以用于复数绝对值的计算,即返回实部和虚部平方和的二次方根
a=2+2j abs(a) #2.8,根号8
divmod():此函数将除法和求余结合起来,返回一个包含商和余数的元组:
divmod(10, 3) # 返回(3, 1) divmod(2.5, 10) # 返回(0.0, 2.5)
pow()
此函数功能和**一样,实现幂运算
round(number,[ndigits])
返回number舍入到小数点后第几位。如果ndigits被省略或为None,则返回最接近输入值的整数
round(4.499) # 返回4 round(4.499, 1) # 返回4.5 round(4.5) # 返回4 等距离倾向于返回偶数