简明Python3教程 7.运算符和表达式

简介

你写的大多数逻辑行都包含表达式。表达式的一个简单例子是2 + 3。一个表达式可分为操作符和操作数两部分。

操作符的功能是执行一项任务;操作符可由一个符号或关键字代表,如+ 。操作符需要数据以供执行其功能,这些数据名为操作数。在上面的例子中,2和3是操作数。

操作符

我们在这里简单地介绍操作符及其用途:

你可在Python解释器中交互验证下面给出的例子。例如,验证2 + 3,在Python解释器提示符中输入:

>>> 2 + 3
5
>>> 3 * 5
15
>>>

操作符


名称


用途


举例


+



使两操作数相加


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。


x = False; y = True; x and y由于x为False返回False。此例中Python因为已知and左值为False而不会计算整个布尔表达式,这是短路求值法


or


布尔或


若x为True则返回True,否则返回y的布尔值。


x = True; y = False; x or y返回True。布尔或同样使用短路求值。

数学运算与赋值捷径

对一个变量进行运算后再赋值给其自身是常见的,因此对于此类表达式有对应捷径:

你可将:

a = 2; a = a * 3

写成:

a = 2; a *= 3

注意:变量 = 变量 操作符 表达式变为了变量 操作符= 表达式

运算顺序

如果你遇到了类似2 + 3 * 4的表达式,首先做加法还是乘法?先做乘法,高中数学如是说。这意味着乘法运算符比加法运算符有更高的优先级。

下表中以从低到高的顺序给出了Python中操作符优先级列表。给定一个表达式,Python将会首先计算在此表中靠下的操作符与表达式,然后计算靠上的操作符与表达式。

此表取自Python reference manual,包括了所有的运算符。建议使用圆括号标注具有较高优先级的部分,这可使程序更可读。详情请看改变计算顺序


操作符


描述


lambda


Lambda表达式


or


布尔或


and


布尔与


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)。

表达式

例子:

#!/usr/bin/python
# Filename: expression.py

length = 5
breadth = 2

area = length * breadth
print('Area is', area)
print('Perimeter is', 2 * (length + breadth))

输出:

   $ python expression.py
   Area is 10
   Perimeter is 14

工作原理:

矩形的长与宽存储在同名变量中。我们通过计算面积与周长的表达式得出这两个值。我们将表达式length * breadth的值存储在变量area中,并使用print函数打印变量值。在第二种情况中,我们直接使用print函数打印表达式2 * (length + breadth)的值。

另外即便我们没有专门在'Area is'与变量area中加入空格,Python仍美观地打印出了此输出。Python自动为我们生成了一个漂亮的输出格式并因此令程序更可读:我们不需要担心输出字符串中的空格。这是另一个Python简化程序员工作的例子。

总结

我们了解了书写任何程序都需要的砖块:操作符、操作数和表达式。下一步我们将了解如何在程序中使用这三者。

 

 

 

--------------Python书籍推荐-----------------

Python基础教程-第2版.修订版 

购买地址1  购买地址2

 

 

PYTHON核心编程

购买地址1  购买地址2

 

 

零基础学Python

购买地址1  购买地址2

时间: 2024-10-31 19:11:24

简明Python3教程 7.运算符和表达式的相关文章

简明Python3教程(A Byte of Python 3)

 关键字:[A Byte of Python v1.92(for Python 3.0)] [A Byte of Python3] 简明Python教程 Python教程 简明Python3教程    简明Python3教程<A Byte of Python3>是一本关于用Python3语言编程的书.可以作为初学这的入门教程.也可以供计算机相关人员参考. 本书可作为Python编程语言的指导或辅导.主要是针对新手的,当然,对于有经验的程序员也很有用.如果你所了解的计算机的知识就是如何保存文本文

简明Python3教程 17.更多

简介 迄今为止我们已经学习了python中的大多数常用知识.本章中我们会接触到更多的知识,使得我们更全面的掌握python.   传递元组 你是否希望过从函数返回两个不同的值?做到这点使用元组即可. >>> def get_error_details(): ...     return (2, 'second error details') ... >>> errnum, errstr = get_error_details() >>> errnum

简明Python3教程 5.第一步

介绍 我们现在来看看如何在Python中运行传统的"Hello world"程序.这会教你如何写.保存以及运行Python程序. 有两种办法来运行您的Python程序--使用交互式的解释器提示符或者源代码文件.我们现在来分别看一看这两种方法. 使用解释器提示符 在命令提示符中输入python来打开解释器. 那些在GNU/Linux与BSD上同时安装了Python 3.x与Python 2.x的用户可能需要输入python3. 而对于Windows用户而言,如果您在PATH环境变量里正确

简明Python3教程 6.基础

你肯定不满足于只打印"Hello World"吧? 你想要的更多 - 你希望得到一些输入,操纵它后再从中得到某些东西.我们可以使用python中的常量和变量实现这些功能.   字面常量(literal constant)字面常量的一个例子是数字诸如5, 1.23, 9.25e-3或字符串This is a string', "It's a string!".顾名思义,字面常量的重点在于"字面", 你直接以字面的意义使用它们.数字2永远是数字2绝不

简明Python3教程 4.安装

如果你已经安装了Python 2.x,你不需要在安装Python 3.0前卸载Python 2.x.这两者可以共存. GNU/Linux用户和BSD用户 如果你使用类似于Ubuntu.Fedora.OpenSUSE.Debian.CentOS或其他你选择的GNU/Linux发行版,或类似于FreeBSD的BSD系统,你的系统很可能已经了Python. 可通过开启shell程序(如konsole或gnome-terminal)并输入以下命令以检测Python是否安装在你的BSD或GNU/Linux

简明Python3教程 12.问题解决

我们已经探究了python语言的方方面面,现在我们将通过设计编写一个有用的程序将这些内容有机的结合起来. 主要目标是让大家有能力独自编写程序.                      问题 我们要解决的问题是"希望编写一个程序,用于创建所有重要文件的备份". 尽管这个问题很简单,但并没有给出足够多的直观信息用以创建解决方案.所以进行少量的分析还是必须的. 例如,如何指定哪些文件需要备份?如何存储?存在哪? 适当的分析过问题后,我们开始设计程序.我们创建一个用于指明程序应该如何工作的列

简明Python3教程 16.标准库

简介 python标准库作为python标准安装的一部分,其自身包含数量庞大的实用模块, 因此熟悉python标准库非常重要,因为很多问题都能利用python标准库快速解决. 下面我们将研究标准库中的一些常用模块.完整的标准库模块列表可以在安装python时附带的文档中的'Library Reference'一节找到. 现在就让我们来看看这些模块吧.   提示 如果你感觉本章内容对于你过于超前,那么可以跳过本章.但是当你熟悉python编程后我强烈建议你把这章补上.   sys模块 sys模块包

简明Python3教程 9.函数

简介 函数是程序的可复用片段,允许你为语句块赋予名字之后在程序的任何地方运行它们任意次,这称做函数调用. 我们已经使用过一些内建函数,例如len和range等. 函数也许是任何有意义的软件中最重要的构件,所以我们将在本章探究函数的方方面面. 函数以关键字def定义,其后紧跟函数名,由一对小括号闭合的形参,最后以冒号结束定义行, 定义行下面的是函数体,它是一个语句块. 听着有点复杂,其实定义起来是很简单的,见下面的例子: 范例: #!/usr/bin/python # Filename: func

简明Python3教程 11.数据结构

简介 数据结构基本上就是 – 可以将一些数据结合到一起的结构,换言之用于存储一组相关的数据. python拥有4种内建数据结构 – 列表,元组(tuple),字典和集合. 我们将看到如何它们,它们又是怎样使我们的编程生涯变的惬意~   列表 列表是一种用于保存有序元素集合的数据结构,即你可以在列表中存储元素序列. 考虑一个购物清单,上面有你需要购买的物品列表,只不过你可能希望以行分隔它们而到了python变成了逗号. 这样想来就容易理解列表了吧. 列表元素应该被封闭在方括号中,这样python才