python学习笔记表达式和运算符(一)

简介:

表达式和运算符

什么是表达式?

1+2*3 就是一个表达式,这里的加号和乘号叫做运算符,1、2、3叫做操作数。1+2*3 经过计算后得到的结果是7,就1+2*3 = 7。我们可以将计算结果保存在一个变量里,ret = 1-2*3 。 所以表达式就是由操作数和运算符组成的一句代码或语句,表达式可以求值,可以放在“=”的右边,用来给变量赋值。


算术运算符 : + - * / //(取整除) %(取余) **

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
>>>  2 + 3
>>>  3 - 2
>>>  2 * 3
>>>  5 / 2
2.5
>>>  5 / / 2
>>>  5 % 2
>>>  2 * * 3
赋值运算符:  =  + =  - =  * =  / =  % =  / / =  * * =
>>> num  =  2    
>>> num  + =  1    # 等价于 num = num + 1
>>> num  - =  1    # 等价于 num = num - 1
>>> num  * =  1    # 等价于 num = num * 1
>>> num  / =  1    # 等价于 num = num / 1
>>> num  / / =  1    # 等价于 num = num // 1
>>> num  % =  1    # 等价于 num = num % 1
>>> num  * * =  2    # 等价于 num = num ** 2
 
 
比较运算符:>、 <、 > = 、 < = 、  = = 、! =    True  False 简单讲一下
顾名思义,比较运算符是用来做比较的,比较的结果会有两种,分别是成立和不成立,成立的时候,结果是  True ,不成立的时候结果是 False 。  True False  用来表示比较后的结果。
>>> a  =  5
>>> b  =  3
>>> a > b   # 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 True
>>> a < b   # 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。False
>>> a < =  b   # 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。False
>>> a > =  b   # 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。True
>>> a  = =  b   # 检查,两个操作数的值是否相等,如果是则条件变为真。False
>>> a ! =  b   # 检查两个操作数的值是否相等,如果值不相等,则条件变为真。True
 
逻辑运算符:  not  and 、  or
逻辑运算符是用来做逻辑计算的。像我们上面用到的比较运算符,每一次比较其实就是一次条件判断,都会相应的得到一个为 True False 的值。而逻辑运算符的的操作数就是一个用来做条件判断的表达式或者变量。
>>> a > b  and   a < b   # 如果两个操作数都是True,那么结果为True,否则结果为False。False
>>> a > b  or   a < b   # 如果有两个操作数至少有一个为True, 那么条件变为True,否则为False。True
>>>  not  a > b   # 反转操作的状态,操作数为True,则结果为False,反之则为TrueFalse
结果为 True 的时候,我们一般称 结果为 真, 逻辑运算符会有一个真值表。

wKioL1mYVTrS4ircAABfD5OXSFY519.png

成员运算符: not in 、in (判断某个单词里是不是有某个字母)

成员运算符用来判断一个元素是否是另一个元素的成员。 比如说我们可以判断 “hello” 中是否有 “h”, 得到的结果也是True 或者 False。

>>> "h" in "hello"  # 这里的意思是 “h” 在“Hello” 中,判断后结果为TrueTrue 
>>> "h" not in "hello"  # 这里的意思是 “h” 不在“Hello” 中,判断后结果为FalseFalse


身份运算符: is、is not(讲数据类型时讲解,一般用来判断变量的数据类型)

用来判断身份。


1
2
3
4
5
6
>>> a  =  123456
>>> b  =  a
>>> b  is  a    #判断  a 和 b 是不是同一个 123456True
>>> c  =  123456
>>> c  is  a   #判断  c 和 a 是不是同一个 123456False
>>> c  is  not  a    #判断  c 和 a 是不是不是同一个 123456True


这里我们首先将123456赋值给a,后有将a赋值给b, 这样其实是 a和b 的值都是123456, 但是后面c的值也是123456,为什么 第一次a is b 的结果为True ,c和 a 的结果为False 呢?

原因是这样的: 我们知道程序是运行在内存里的,第一次 我们将123456赋值给a的时候,其实是在内存里开辟了一块空间,将123456放在这块空间里,为了找到这里的123456, 会有一个指向这块空间的地址,这个地址叫做内存地址,是123456存储在内存中的地址。a其实指向的就是存储123456的内存空间的地址。执行了b=a,就是让b指向的地址和a一样。之后我们执行了 c = 123456 ,这里就会再开辟一块内存空间,并将指向该空间的内存地址赋值给c ,这样的话 ,a和b 指向的是同一个123456, c 指向的是另外一个123456 。

wKiom1mYVYDDOa9HAAAPRzeBF5Q744.png-wh_50

位运算符:

先了解一个概念:

我们平时用到的数字在计算机中是以二进制表示的,  这个二进制数叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.

比如:十进制中的数 +7 ,计算机字长为8位,转换成二进制就是00000111。如果是 -7 ,就是 10000111 。那么,这里的 00000111 和 10000111 就是机器数。

  原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

  [+1] = 0000 0001

  [-1] = 1000 0001

  第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
  11111111 到 01111111  即  -127 到 127

  反码的表示方法是:
  正数的反码是其本身
  负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

  [+1] = [00000001] = [00000001]

  [-1] = [10000001] = [11111110]

  补码的表示方法是:
  正数的补码就是其本身
  负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

  [+1] = [00000001] = [00000001] = [00000001]

  [-1] = [10000001] = [11111110] = [11111111]


我们设置a=234 (二进制为 11101010), b=44 (二进制为 101100)

& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。

^ 按位异或运算符:当两对应的二进位相异时,结果为1

       

~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1

   a = 10000000 = 128

    ~a

     result: 01111111  = 127

<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。

    a = 10110011 = 179

    a << 2

result:  1011001100


>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

    a = 10110011 = 179

    a >> 2

result:  00101100  = 44


位运算符一般用于二进制操作,一般用于底层,我们很少用,知道就可以了。

优先级

wKioL1mYVbHhK3jSAAA7qGa0LVM697.png-wh_50

运算符那么多,优先级记不住怎么办? 使用小括号。通过使用小括号,我们就可以很方便的进行优先级的区分。












本文转自cqtesting51CTO博客,原文链接:http://blog.51cto.com/cqtesting/1957721 ,如需转载请自行联系原作者



相关文章
|
7天前
|
Python
python一元运算符的应用
【4月更文挑战第12天】Python的一元运算符包括正号(+), 负号(-), 按位取反(~), 取绝对值(abs())和类型转换(int(), float(), str())。例如:`+a`使数值变正,`-a`变为负数,`~a`为按位取反,`abs(a)`获取绝对值,而`int(a)`, `float(a)`, `str(a)`则用于类型转换。示例代码展示了这些运算符的使用效果。
15 0
|
20天前
|
存储 C语言 Python
【Python】学习笔记day3
【Python】学习笔记day3
26 1
|
1月前
|
索引 Python
Python系列(14)—— 字符串运算符
Python系列(14)—— 字符串运算符
|
2天前
|
开发者 索引 Python
Python中的海象运算符:简洁而强大的赋值表达式
【4月更文挑战第17天】Python 3.8 引入了海象运算符 `:=`,也称赋值表达式运算符,用于在表达式内部赋值,简化代码并提升可读性。它能用于条件判断、循环控制和函数参数等场景,优化逻辑流程。然而,使用时需注意可读性、运算符优先级及赋值限制,以确保代码清晰易懂。海象运算符是Python编程的一个有用工具,但应根据情况谨慎使用。
|
7天前
|
数据采集 机器学习/深度学习 人工智能
「Python系列」Python运算符
Python 支持多种运算符,包括算术运算符、比较运算符、逻辑运算符、位运算符等等。
16 3
|
25天前
|
程序员 数据处理 开发者
【Python小技巧】通过实例说明推导式,条件表达式和Lambda函数
【Python小技巧】通过实例说明推导式,条件表达式和Lambda函数
23 2
|
27天前
|
算法 搜索推荐 测试技术
python排序算法及优化学习笔记1
python实现的简单的排序算法,以及算法优化,学习笔记1
33 1
|
27天前
|
安全 程序员 数据处理
Python运算符详解
Python编程中的运算符包括算术、比较、逻辑、赋值和位运算符。算术运算符如加法(+), 减法(-), 乘法(*), 除法(/), 整除(//)和取模(%)用于数学运算。比较运算符如==, !=, &gt;, &lt;, &gt;=和&lt;=用于比较两个值。逻辑运算符and, or和not用于组合布尔表达式。赋值运算符如=, +=等用于赋值和复合赋值。位运算符如&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、&lt;&lt;(左移)和&gt;&gt;(右移)对整数的二进制位进行操作,常用于底层数据处理和性能优化。
|
29天前
|
算法 程序员 C++
【Python 基础教程 运算符06】Python3运算符超详细解析:全面入门教程,初学者必读
【Python 基础教程 运算符06】Python3运算符超详细解析:全面入门教程,初学者必读
90 2
|
29天前
|
Python
Python语言的表达式
Python语言的表达式

热门文章

最新文章