3.1算术运算符
Python中的算术运算符用来组织整型和浮点型数据的算术运算,按照参加运算的操作数的不同可以分为一元运算符和二元运算符。
大同小异,只挑不一样的地方重点介绍,其他的常见的的就一笔带过了。
3.1.1一元运算符
只有 ‘-’
a = 1
a = -a
print(a)
#输出
-1
[Finished in 0.5s]
3.1.2二元运算符
二元运算符包括:+、-、、/、%、*和//,这些运算符主要是对数字类型数据进行操作,而+和*可以用于字符串、元组和列表等类型数据操作。
举例如下:
a = int(3/2)
print(a)
b = int(-3/2) #主要用于与//作出区分,这样写只是保留整数部分
print(b)
c = int(-3//2) # 显然结果不同,注意与c/c++区别
print(c)
d=2**8 # 又一个不同之处
print(d)
# 输出
1
-1
-2
256
[Finished in 0.2s]
字符串属于序列的一种,所以字符串可以使用+和*运算符(不同之处),如下:
s1 = 'I am'
s2 = ' Genius'
s = s1+s2
print(s)
print(s*2)
#输出
I am Genius
I am GeniusI am Genius
[Finished in 0.2s]
+运算符会将两个字符串连接起来,但不能将字符串与其他类型数据连接起来。*运算符第一操作数是字符串,第二操作数是整数,表示重复字符串多次。注意第二操作数只能是整数
3.2关系运算符
关系运算是比较两个表达式大小关系的运算,它的结果是布尔类型数据,即True或False。关系运算符有6种:==、!=、>、<、>=和<=,如下:
Python中关系运算可以比较任何的对象,整数、浮点数都是对象,可以使用关系运算符,字符串、列表和元组数据值也属于对象也可以使用关系运算符。
a = 'Genius'
b = 'Genius'
c ='genius'
d =[]
e = [1,2,3]
print(a==b)
print(a<c)
print(d==e)
print(d<e)
#输出
True
True
False
True
[Finished in 0.3s]
3.3逻辑运算符
逻辑运算符是对布尔型变量进行运算,其结果也是布尔型。如下:
就是说把以前熟知的!,||,&&变了,虽然感觉不方便,可是不得不低头。
3.4位运算符
位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整型数据。位运算符有如下几个运算符:&、|、^、~、>>和<<。如下:
3.5赋值运算符
赋值运算符只是一种简写,一般用于变量自身的变化,例如a与其操作数进行运算结果再赋值给a,算术运算符和位运算符中的二元运算符都有对应的赋值运算符。
比c/c++多了几个,不过大同小异了
3.6其他运算符
Python还有一些其他运算符,其中两个“测试”相关重要的运算符,其他运算符会后面涉及到相关内容时再详细介绍。这两个“测试”运算符是:同一性测试运算符和成员测试运算符,所谓“测试”就是判断之意,因此他们的运算结果是布尔值,他们也属于关系运算符。
以下举例使用了数据结构和面向对象,可以先不看,不过不难,假装学过来看
3.6.1同一性测试运算符
同一性测试运算符就是测试两个对象是否同一个对象,类似于==运算符,不同之处,==是测试两个对象的内容是否相同,当然如果是同一对象==比如也返回True。
同一性测试运算符有两个:is和is not,is是判断同一对象,is not是不判断同一对象。如下:
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
p1 = Person('Genius',18)
p2 = Person('Genius',18)
print(p1==p2) #显然p1和p2是两个对象
print(p1 is p2)
print(p1!=p2)
print(p1 is not p2)
#输出
False
False
True
True
[Finished in 0.3s]
==虽然是比较两个对象的内容是否相当,但是也需要告诉对象比较的规则是什么,是比较name还是age?这需要在定义类时重写_eq_方法,指定比较规则。类似于c++重载运算符
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def __eq__(self,other):
if self.name==other.name and self.age==other.age:
return True
else:
return False
p1 = Person('Genius',18)
p2 = Person('Genius',18)
print(p1==p2)
print(p1 is p2)
print(p1!=p2)
print(p1 is not p2)
#输出
True
False
False
True
[Finished in 0.4s]
3.6.2成员测试运算符
成员测试运算符可以测试在一个序列(sequence)对象是否包含某一个元素,成员测试运算符有两个:in和not in,in是测试是否包含某一个元素,not in是测试是否不包含某一个元素。
source = 'I am Genius'
print('I' in source)
print('GG' not in source)
list =[1,2,3]
print(1 in list)
print(4 not in list)
#输出
True
True
True
True
[Finished in 0.3s]
3.7运算符优先级
在一个表达式计算过程中,运算符的优先级非常重要。下图从上到下优先级从高到低,同一行具有相同的优先级。二元运算符计算顺序从左向右,但是先级19的赋值运算符的计算顺序从右向左的。
没必要记,用的时候翻一翻