Python基本运算符

基本运算符

运算符是具有某种功能或操作的符号,用于对数据进行运算或操作。常见的运算符包括算术运算符、比较运算符、逻辑运算符、位运算符等。除了这些常见的运算符之外,不同编程语言还可能具有特定的运算符或语法,例如三元运算符、条件运算符、null合并运算符等。
在本文仅介绍Python的基本运算符,即算术运算符、比较运算符、逻辑运算符、赋值运算符、成员运算符、身份运算符。

1.算数运算符

算数运算符中包含大家都熟悉的四则运算,加减乘除,对应的符号分别是:+ - * /,此外,还有求余数的:%,求商的 // 这些都是算术运算符。根据中学数学的知识,看官也应该想到,还应该有乘方、开方之类的。

下面列出一个表格,将所有的运算符表现出来。不用记,但是要认真地看一看,知道有那些,如果以后用到,但是不自信能够记住,可以来查。

运算符描述实例
+加 - 两个对象相加10+20 输出结果 30
-减 - 得到负数或是一个数减去另一个数10-20 输出结果 -10
*乘 - 两个数相乘或是返回一个被重复若干次的字符串10 * 20 输出结果 200
/除 - x除以y20/10 输出结果 2
%取余 - 返回除法的余数20%10 输出结果 0
**幂 - 返回x的y次幂10**2 输出结果 100
//取整除 - 返回商的整数部分9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

2.比较运算符

所谓比较,就是比一比两个东西。这在某国是最常见的了,做家长的经常把自己的孩子跟别人的孩子比较,唯恐自己孩子在某方面差了;官员经常把自己的收入和银行比较,总觉得少了。

在计算机高级语言编程中,任何两个同一类型的量的都可以比较,比如两个数字可以比较,两个字符串可以比较。注意,是两个同一类型的。不同类型的量可以比较吗?首先这种比较没有意义。就好比二两肉和三尺布进行比较,它们谁大呢?这种比较无意义。所以,在真正的编程中,我们要谨慎对待这种不同类型量的比较。

但是,在某些语言中,允许这种无意思的比较。因为它在比较的时候,都是将非数值的转化为了数值类型比较。

对于比较运算符,在小学数学中就学习了一些:大于、小于、等于、不等于。没有陌生的东西,Python里面也是如此。且看下表:

以下假设变量a为10,变量b为20:

运算符描述实例
==等于 - 比较对象是否相等(a == b) 返回 False。
!=不等于 - 比较两个对象是否不相等(a != b) 返回 true.
>大于 - 返回x是否大于y(a > b) 返回 False。
<小于 - 返回x是否小于y(a < b) 返回 true。
>=大于等于 - 返回x是否大于等于y。(a >= b) 返回 False。
<=小于等于 - 返回x是否小于等于y。(a <= b) 返回 true。

3.逻辑运算符

首先聊聊什么是逻辑?逻辑又称理则、论理、推理、推论,是有效推论的哲学研究。逻辑被使用在大部份的智能活动中,但主要在哲学、数学、语义学和计算机科学等领域内被视为一门学科。在数学里,逻辑是指研究某个形式语言的有效推论。而在Python中,或者说在所有编程语言中,逻辑就是实现布尔类型的变量间的运算。

看下面的表格,对这种逻辑运算符比较容易理解:
(假设变量a为10,变量b为20)

运算符描述实例
and逻辑"与" - 如果x为False,x and y返回False,否则它返回y的计算值。(a and b) 返回 20。
or布尔"或" - 如果x是True,它返回True,否则它返回y的计算值。(a or b) 返回 10。
not布尔"非" - 如果x为True,返回False。如果x为False,它返回True。not(a and b) 返回 false。

下面对逻辑运算的三种运算符做详解:

3.1 and,逻辑与运算

翻译为“与”运算,但事实上,这种翻译容易引起望文生义的理解。先说一下正确的理解。A and B,含义是:首先运算A,如果A的值是true,就计算B,并将B的结果返回做为最终结果,如果B是False,那么A and B的最终结果就是False,如果B的结果是True,那么A and B的结果就是True;如果A的值是False ,就不计算B了,直接返回A and B的结果为False。
比如:
4>3 and 4<9,首先看4>3的值,这个值是True,再看4<9的值,是True,那么最终这个表达式的结果为True.

4>3 and 4<2,先看4>3,返回True,再看4<2,返回的是False,那么最终结果是False.

4<3 and 4<9,先看4<3,返回为False,就不看后面的了,直接返回这个结果做为最终结果(对这种现象,有一个形象的说法,叫做“短路原则”

3.2 or,逻辑或运算

or,翻译为“或”运算。在A or B中,它的运算过程可以用伪代码表示为:

if A==True:         #如果A的值是True
    return True     #返回True,表达式最终结果是True
else:               #否则,也就是A的值不是True
    return bool(B)     #看B的值,然后就返回B的值做为最终结果。

当然,or运算同样支持“短路原则”,但是和and不同,and的短路运算体现为当and的前半部分运算为False则“短路”掉后面的运算,而or运算则是or的前半部分运算为True,则“短路”掉后半部分运算。

3.3 not,逻辑非运算

not,翻译成“非”运算,其运算规则也很简单粗暴,即不论面对什么,否定它。

print(not True)  # False
print(not False)  # True

3.4 逻辑运算的优先级

逻辑运算的优先级为not > and > or,同一级从左到右依次计算。
若不好确定优先级可以用括号来做优先级的区分。

4. 赋值运算

赋值运算是一种基本的操作,用于将一个值赋给一个变量或表达式。在编程中,赋值运算符通常用等号(=)表示。例如,a = 5; 就是将数字5赋值给变量a。赋值运算符的含义是将右侧的值放入左侧的变量或表达式中。在执行赋值运算时,先计算右边的值,然后将计算结果传递给左边的变量或表达式。

4.1 增量赋值

基本增量赋值运算符见下表:

运算符描述实例
=简单的赋值运算符c = a + b 将 a + b 的运算结果赋值为 c
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a

4.2 链式赋值

如果我们想把同一个值同时赋值给多个变量名,可以这么做:

>>> z=10
>>> y=z
>>> x=y
>>> x,y,z
(10, 10, 10)

所谓链式赋值即同时将一个值赋给多个变量

>>> x = y = z = 10
>>> x,y,z
(10, 10, 10)

4.3 交叉赋值

交叉赋值即做两变量值的交换,在其他编程语言中,简单交换两变量值一般通过第三方变量,若两变量为数值类型,还可通过算数运算达到交换的目的,如下:

a = 10
b = 20
# 第三方变量交换变量值
c = a 
a = b 
b = c
print(a,b)  # 20, 10
# 算数运算达到交换目的
a = a + b
b = a - b
a = a - b
print(a,b)  #10, 20

以下为交叉运算,此运算为Python特有,如下:

a = 10 
b = 20
a, b = b, a
print(a,b)  # 20, 10

4.4 解压赋值

如果我们想把列表中的多个值取出来依次赋值给多个变量名,可以这么做:

>>> nums=[11,22,33,44,55]
>>> 
>>> a=nums[0]
>>> b=nums[1]
>>> c=nums[2]
>>> d=nums[3]
>>> e=nums[4]
>>> a,b,c,d,e
(11, 22, 33, 44, 55)

解压赋值指的是一行代码可以搞定这件事

>>> a,b,c,d,e=nums # nums包含多个值,就好比一个压缩包,解压赋值因此得名
>>> a,b,c,d,e
(11, 22, 33, 44, 55)

注意:上述解压赋值,等号左边的变量名个数必须与右面包含值的个数相同,否则会报错,如下:

#1、变量名少了
>>> a,b=nums
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)

#2、变量名多了
>>> a,b,c,d,e,f=nums
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 6, got 5)

但如果我们只想取头尾的几个值,可以用*变量匹配如下:

>>> a,b,*_=nums
>>> a,b
(11, 22)

ps:字符串、字典、元组、集合类型都支持解压赋值

5. 成员运算符

除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

运算符描述实例
in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
a = 10
b = 20
list = [1, 2, 3, 4, 5 ]
 
if ( a in list ):
   print ("1 - 变量 a 在给定的列表中 list 中")
else:
   print ("1 - 变量 a 不在给定的列表中 list 中")
 
if ( b not in list ):
   print ("2 - 变量 b 不在给定的列表中 list 中")
else:
   print ("2 - 变量 b 在给定的列表中 list 中")
 
# 修改变量 a 的值
a = 2
if ( a in list ):
   print ("3 - 变量 a 在给定的列表中 list 中")
else:
   print ("3 - 变量 a 不在给定的列表中 list 中")

以上实例输出结果为:

1 - 变量 a 不在给定的列表中 list 中
2 - 变量 b 不在给定的列表中 list 中
3 - 变量 a 在给定的列表中 list 中

6. 身份运算符

身份运算符用于比较两个对象的存储单元,即是否同一内存地址。

运算符描述实例
isis 是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is notis not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(x) != id(y)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个,即内存地址是否相同, == 用于判断引用变量的值是否相等。

>>>a = [1, 2, 3]
>>> b = a
>>> b is a 
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值