你写的大多数逻辑行都包含表达式。表达式的一个简单例子是2 + 3。一个表达式可分为操作符和操作数两部分。
操作符的功能是执行一项任务;操作符可由一个符号或关键字代表,如+ 。操作符需要数据以供执行其功能,这些数据名为操作数。在上面的例子中,2和3是操作数。
我们在这里简单地介绍操作符及其用途:
你可在Python解释器中交互验证下面给出的例子。例如,验证2 + 3,在Python解释器提示符中输入:
操作符
名称
用途
举例
+
加
使两操作数相加
3 + 5 得到 8. 'a' + 'b' 得到 'ab'.
-
减
求出前后两数之差。若第一个操作数未写则默认为0。
-5.2 得道一个负数, 50 - 24得到26。
*
乘
得出两数乘积或返回重复若干次的字符串。
2 * 3得到6。'la' * 3得到'lalala'.
**
幂
返回x的y次幂。
3 ** 4得到81 ( 3 * 3 * 3 * 3)
/
除
将x除以y。
4 / 3 得到 1.3333333333333333。
//
取整除
返回最大的整数商。
4 // 3 得到 1。
%
取模
返回余数。
8% 3 得到2。 -25.5% 2.25得到1.5.
<<
左位移
将操作数向左移动若干bit位。(数字在内存中以二进制表示)
2 << 2 得到 8。 2在二进制中表示为10 。左位移两bit位后得到1000,十进制中表示为8。
>>
右位移
将操作数向右移动若干bit位。
11 >> 1得到5, 11二进制下表示为1011,右位移一位后得到101,十进制中表示为5。
&
按位与
数的按位与。
5 & 3 得到 1。
|
按位或
数的按位或。
5 | 3得到7。
^
按位异或
数的按位异或。
5 ^ 3得到6。
~
按位翻转
x的按位翻转是-(x+1)。
~5得到-6。
<
小于
返回x是否小于y。所有比较运算符返回布尔值True或False。请注意布尔值大小心敏感。
5 < 3得到False,3 < 5得到True.
比较运算符可任意连接,如3 < 5 < 7得到True.
>
大于
返回x是否大于y。
5 > 3 得到True。如果两个操作符都是数字,解释器会将其转换到同一类型后再比较。若否则返回False。
<=
小于等于
返回x是否小于等于y。
x = 3; y = 6; x <= y返回True。
>=
大于等于
返回x是否大于等于y。
x = 4; y = 3; x >= 3得到True。
==
等于
比较两操作数是否相等。
x = 2; y = 2; x == y得到True。
x = 'str'; y = 'stR'; x == y得到False。
x = 'str'; y = 'str'; x == y得到True。
!=
不等于
比较两操作数是否不相等。
x = 2; y = 3; x!= y得到True。
not
布尔非
若X为True则返回False,反之亦然。
x = True; not x返回False。
and
布尔与
无论y值为何,若X为False则x and y 返回False。
or
布尔或
若x为True则返回True,否则返回y的布尔值。
x = True; y = False; x or y返回True。布尔或同样使用短路求值。
对一个变量进行运算后再赋值给其自身是常见的,因此对于此类表达式有对应捷径:
你可将:
写成:
注意:变量 = 变量 操作符 表达式变为了变量 操作符= 表达式
如果你遇到了类似2 + 3 * 4的表达式,首先做加法还是乘法?先做乘法,高中数学如是说。这意味着乘法运算符比加法运算符有更高的优先级。
下表中以从低到高的顺序给出了Python中操作符优先级列表。给定一个表达式,Python将会首先计算在此表中靠下的操作符与表达式,然后计算靠上的操作符与表达式。
描述
lambda
Lambda表达式
not x
in, not in
成员测试
is, is not
同一性测试
<, <=, >, >=,!=, ==
比较运算符
<<, >>
位移
+, -
加减
*, /, //, %
乘除、取整除、取余
+x, -x
正负
~x
按位非
x.attribute
属性引用
x[index]
下标
x[index1:index2]
寻址段
f(arguments …)
函数调用
(expressions, …)
显示绑定或元组
[expressions, ...]
显示列表
{key:datum, …}
显示字典
表中仍未接触到的运算符将会在后续章节中说明。
拥有相同优先级的运算符位于上表的同一行中,例如+和-拥有相同优先级。
使用括号可增加表达式可读性。例如2 + (3 * 4)就比需要运算符优先级知识的2 + 3 * 4更好理解。但是仍要避免过量使用括号,例如(2 + (3 * 4))。
使用括号还可以改变运算顺序,例如在(2 + 3) * 4中括号使表达式先进行加法运算后进行乘法运算。
操作符在优先级相同的情况下从左向右计算,例如2 + 3 + 4等价于(2 + 3) + 4。另一些运算符如赋值运算符从右向左计算,例如a = b = c等价于a = (b = c)。
例子:
输出:
工作原理:
矩形的长与宽存储在同名变量中。我们通过计算面积与周长的表达式得出这两个值。我们将表达式length * breadth的值存储在变量area中,并使用print函数打印变量值。在第二种情况中,我们直接使用print函数打印表达式2 * (length + breadth)的值。
另外即便我们没有专门在'Area is'与变量area中加入空格,Python仍美观地打印出了此输出。Python自动为我们生成了一个漂亮的输出格式并因此令程序更可读:我们不需要担心输出字符串中的空格。这是另一个Python简化程序员工作的例子。
我们了解了书写任何程序都需要的砖块:操作符、操作数和表达式。下一步我们将了解如何在程序中使用这三者。
--------------Python书籍推荐-----------------
Python基础教程-第2版.修订版
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauUWYyITZ2EDM0QWZ0EDOhZGOxgDO4M2YwEGN5IGZ1MTMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.jpg)
PYTHON核心编程
零基础学Python