python的内置对象是指python语言自带的对象,在python中一切皆为对象,所以都可以按照面向对象的方法来操作这些对象。除了内置对象之外,也可以自行编写一些操作对象,比如numpy库中的array数组对象就不是python内置对象。
python内置对象有
常量:不能改变的字面量,比如固定的一个数字4,列表[1, 3, 4]
变量:可以变化值和类型的量
Python采用基于值的内存管理模式,任何变量都是对字面常量的引用,或者存储的是字面常量的地址。
例如
In [28]: x = [1, 3, 4]
In [29]: y = x
In [30]: y.pop()
Out[30]: 4
In [31]: x
Out[31]: [1, 3]
In [32]: y
Out[32]: [1, 3]
虽然在In[29]中把x赋值给y,但是修改了y的同时,x也修改了,这表明x和y指向的是同一个地址上的列表[1, 3, 4]
python支持复数及其运算,只需要按照数学中的复数的定义和运算规则来操作就行
In [1]: c = 4 + 3j
In [2]: type(c)
Out[2]: complex
In [3]: d = 4 - 3j
In [4]: c + d
Out[4]: (8+0j)
In [5]: type(c+d)
Out[5]: complex
In [6]: c*d
Out[6]: (25+0j)
但是要注意,两个复数运算后依然是复数类型,虽然两个共轭复数的和是实数,在python中依然是复数类型。
字符串str编码得到字节串bytes,字节串bytes解码得到字符串str
In [7]: q = 'name'
In [8]: p = b'name'
In [9]: type(q)
Out[9]: str
In [10]: type(p)
Out[10]: bytes
In [11]: x = q.encode('utf-8')
In [12]: x
Out[12]: b'name'
In [13]: x.decode()
Out[13]: 'name'
主要为加+、减-、乘*、除/、整商 //、求余 %、幂 **
每种运算符作用于不同对象会有不同的效果。
对于两个可以比较大小(序关系)的操作对象,可以用关系运算符得到一个关系表达式。
<、<=、 >、 >=、 ==、 !=
最后两个表示等于和不等于
用于判断一个对象是否是一个对象的元素
In [14]: 3 in [1,2,3]
Out[14]: True
In [15]: 4 in ['1',3]
Out[15]: False
用于判断两个对象是否是同一个对象,即在内存中的地址是否相同
In [1]: x = [1,2,3]
In [2]: y = [1,2,3]
In [3]: x is y
Out[3]: False
In [4]: z = x
In [5]: z is x
Out[5]: True
In [6]: a = 300
In [7]: b = 300
In [8]: a is b
Out[8]: False
这里创建了两个列表和两个整数300,所以他们的地址不一样
In [9]: id(a) #a的地址
Out[9]: 4425498576
In [10]: id(b) #b的地址
Out[10]: 4426555184
按位与:&
按位或:|
按位异或:^
左移位:<<
一个数字a左移位一位,右侧补0,相当于原来数字乘以2;右移位一位,左侧补0,相当于原来数字除以2
同时这些运算符还兼有集合运算功能
求交集:&
求并集:|
求对称差:^
求差集:-
集合A和B的对称差是指属于A和B但是不属于A交B的元素的集合
and or not
惰性求值\逻辑短路:
当连接多个表达式的值时只计算需要计算的表达式。
exp 1 and exp 2 等价于 exp1 if not exp1 else exp2
In [12]: 3<5 and 4>6
Out[12]: False
In [13]: 3<5 if not 3<5 else 4>6
Out[13]: False
In [14]: 4>6
Out[14]: False
在运算符后添加一个=,就可以获得如下效果
a += 1 等价于a = a + 1
Python中没有 ++ - -运算符