3.运算符

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的赋值运算符的计算顺序从右向左的。
这里写图片描述
没必要记,用的时候翻一翻

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值