4.运算符、三元表达式


 

算术运算符:

算术运算符包含:

+加法运算、

-减法运算、

*乘法运算、

/精确除法运算、

//地板除法运算、

%求余运算、

**幂运算符

+加法运算:

>>> a=1
>>> b=2
>>> c=a+b
>>> c
3

-减法运算:

>>> c=1000
>>> a=6000
>>> b=c-a
>>> b
-5000

*乘法运算:

>>> c=22
>>> a=33
>>> b=c*a
>>> b
726

 

/精确除法运算、//地板除法运算:

python的除法是比较精确的,没有像其他一些语言一样(其他语言的得出20/6=3),例如:

>>> 20/6
3.3333333333333335
>>> 18/5
3.6
>>> 10/2
5.0

如果要使用“地板除法”(不保留小数),需要使用“//”,地板除法中如果其中一个操作数为负数,结果向负无穷取整

>>> 20//6
3
>>> 18//5
3
>>> 10//2
5

image_5a746968_1b7b

 

%求余运算:

返回除法中的余数结果

>>> 5%2
1

 

**幂运算符:指数(幂)

>>> 2**3
8
>>> 2**-1
0.5
>>> 3**3
27

 

 


逻辑运算符:

逻辑运算符包括:

and与运算,

or或运算,

not非运算

and与运算 :

如果x为False,x and y返回False,

如果x为True,返回y的计算值。本质是,z=True and y =y,如果x是真的话,最终结果取决于y

>>> 0 and 2
0
>>> 1 and 2
2
>>> 1 and 99
99
>>> -1 and 99
99

 

or 或运算:

如果x为False,返回y的值,

如果x为True,不再判断y,返回x的值。

image_5a747451_25c

image

 

not非运算:

“not 表达式” 返回表达式结果的“相反的值”。如果表达式结果为真,则返回false;如果表达式结果为假,则返回true。

>>> not 1
False
>>> not 2
False
>>> not 0
True
>>> not True
False
>>> not False
True

比较运算符(关系运算符):

比较运算符关系运算符包括:

<小于运算符,<=不大于运算符,>大于运算符,>=不小于运算符,==等于运算符,!=运算符 

<

如果左操作数的值小于右操作数的值,返回True,否则返回False

image_5a7474f4_3d83

 

>

如果左操作数的值大于右操作数的值,返回True,否则返回False

image_5a7474f4_2536

 

!=    :

如果两个操作数的值不相等,返回True,否则返回False

image_5a7474f4_7b89

 

<=

如果左操作数的值小于或等于右操作数的值,返回True,否则返回False

image_5a7474f4_24fa

 

>=

如果左操作数的值大于或等于右操作数的值,返回True,否则返回False

image_5a7474f4_655f

 

==

如果两个操作数的值相等,返回True,否则返回False 。【注意,只比较值是否相同,不计较内存地址是否相同

image_5a7474f4_6836


赋值运算符:

=:将右侧操作数的值分配给左侧操作数

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

 

image_5a74750b_4fe3


位运算符:

 

&:

按位与操作

 

image_5a747513_4c7d

 

|:

按位或操作

image_5a747513_7e85

 

<<:

二进制左移

image_5a747513_1de8

 

>>:

二进制右移

image_5a747513_6ffa

image_5a747513_3704


^:

二进制异或

image_5a747513_56

 

~:

~x,返回将x的二进制取反之后的值

image


成员运算符:

成员运算符包括:in运算符,not in运算符 

in:

x in y ,如果在指定的序列y中找到x,则返回 true,否则返回 false

not in :

x not in y ,如果在指定的序列y中找不到x,则返回 true,否则返回 false

image_5a747542_53a8

image


身份运算符:

身份运算符包括:is 运算符, is not运算符

身份运算符比较两个对象的内存位置

 

is :

内存位置相同返回True,否则返回False

>>> str1="apple"
>>> str2=str1
>>> id(str1)
2590247801216
>>> id(str2)
2590247801216
>>> str2 is str1
True

is not :

内存位置不相同返回True,否则返回False

a=1
b=1
c=999999999
d=999999999
print(id(a),id(b),a is b)
print(id(c),id(c),c is d)
str1="apple"
str2="apple"
print(id(str1),id(str2),str1 is str2)
l1=['a','b','c']
l2=['a','b','c']
print(id(l1),id(l2),l2 is l1)

上述代码结果:

image

另外的测试:

>>> a=1000000
>>> b=1000000
>>> id(a)
2590249791600
>>> id(b)
2590249791632
>>> a="str1"
>>> b="str1"
>>> id(a)
2590249830528
>>> id(b)
2590249830528

这个问题体现缓存技术的使用:为了节省内存空间,或者为了节省时间,对于数据是同一份不可变的对象的不同名变量,使用缓存技术可以节约空间,而对于可变对象,如即使初值相同的列表,后面的操作不同为了不互相干扰,所以不使用缓存技术来节约空间。

如何查看缓存设置:待补充

 


is 与 == 区别:

引用对象是否为同一个, == 用于判断引用变量的值是否相等。

image_5a74754a_22ce

image_5a74754a_3d9

 

 

 


运算符优先级:

运算符的优先级:

运算符的次序,序号小的优先级大于序号大的:

image

 

建议使用小括号来指示运算优先级,避免繁杂记忆。


三元表达式(三元运算符):

格式:条件为真时的结果 if 判定条件 else 条件为假时的结果  
 
>>> a=250 if True else 150
>>> a
250
>>> a=220 if 1<0 else 1
>>> a
1
 

原文地址:https://www.cnblogs.com/progor/p/8407719.html