专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Python » python正则表达式:简明 Python 教程 -- 第5章 运算符和表达式 »正文

python正则表达式:简明 Python 教程 -- 第5章 运算符和表达式

来源: 发布时间:星期四, 2009年1月8日 浏览:26次 评论:0
  介绍

  你编写大多数语句(逻辑行)都包含表达式个简单表达式例子如2 + 3个表达式可以分解为运算符和操作数

  运算符 功能是完成某件事它们由如+这样符号或者其他特定关键字表示运算符需要数据来进行运算这样数据被称为 操作数 在这个例子中2和3是操作数

  运算符

  我们将简单浏览下运算符和它们使用方法:

  窍门技巧

  你可以交互地使用解释器来计算例子中给出表达式例如为了测试表达式2 + 3使用交互式带提示符Python解释器:

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


表5.1 运算符和它们使用方法

   运算符 名称 介绍说明 例子
+ 加 两个对象相加 3 + 5得到8'a' + 'b'得到'ab'
- 减 得到负数或是个数减去另个数 -5.2得到个负数50 - 24得到26
* 乘 两个数相乘或是返回个被重复若干次串 2 * 3得到6'la' * 3得到'lalala'
** 幂   返回xy次幂

3 ** 4得到81(即3 * 3 * 3 * 3)
/ 除 x除以y 4/3得到1(整数除法得到整数结果)4.0/3或4/3.0得到1.3333333333333333
// 取整除 返回商整数部分 4 // 3.0得到1.0
% 取模 返回除法余数 8%3得到2-25.5%2.25得到1.5
<< 左移 把个数比特向左移定数目(每个数在内存中都表示为比特或 2进制数字即0和1) 2 << 2得到8——2按比特表示为10
>> 右移 把个数比特向右移定数目 11 >> 1得到5——11按比特表示为1011向右移动1比特后得到101即十进制5
& 按位和 数按位和 5 & 3得到1
| 按位或 数按位或 5 | 3得到7
^ 按位异或 数按位异或 5 ^ 3得到6
~ 按位翻转 x按位翻转是-(x+1) ~5得到6
< 小于 返回x是否小于y所有比较运算符返回1表示真返回0表示假这分别和特殊变量True和False等价注意这些变量名大写 5 < 3返回0(即False)而3 < 5返回1(即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 >= y返回True
等于 比较对象是否相等 x = 2; y = 2; x y返回Truex = 'str'; y = 'stR'; x y返回Falsex = 'str'; y = 'str'; x y返回True
!= 不等于 比较两个对象是否不相等 x = 2; y = 3; x != y返回True
not 布尔“非” 如果x为True返回False如果x为False它返回True x = True; not y返回False
and 布尔“和” 如果x为Falsex and y返回False否则它返回y计算值 x = False; y = True; x and y由于x是False返回False在这里Python不会计算y它知道这个表达式值肯定是False(x是False)这个现象称为短路计算
or 布尔“或” 如果x是True它返回True否则它返回y计算值 x = True; y = False; x or y返回True短路计算在这里也适用

  运算符优先级

  如果你有个如2 + 3 * 4那样表达式是先做加法呢还是先做乘法?我们中学数学告诉我们应当先做乘法——这意味着乘法运算符优先级高于加法运算符

  下面这个表给出Python运算符优先级从最低优先级(最松散地结合)到最高优先级(最紧密地结合)这意味着在个表达式中Python会首先计算表中较下面运算符然后在计算列在表上部运算符

  下面这张表(和Python参考手册中那个表样)已经顾及了完整需要事实上我建议你使用圆括号来分组运算符和操作数以便能够明确地指出运算先后顺序使尽可能地易读例如2 + (3 * 4)显然比2 + 3 * 4清晰和此同时圆括号也应该正确使用而不应该用得过滥(比如2 + (3 + 4))

  表5.2 运算符优先级

   运算符 描述
lambda Lambda表达式
or 布尔“或”
and 布尔“和”
not x 布尔“非”
innot in 成员测试
isis not 同性测试
<<=>>=!= 比较
| 按位或
^ 按位异或
& 按位和
<<>> 移位
+- 加法和减法
*/% 乘法、除法和取余
+x-x 正负号
~x 按位翻转
** 指数
x.attribute 属性参考
x[index] 下标
x[index:index] 寻址段
f(arguments...)
(experession,...) 绑定或元组显示
[expression,...] 列表显示
{key:datum,...} 字典显示
'expression,...' 串转换



  其中我们还没有接触过运算符将在后面章节中介绍

  在表中列在同运算符具有 相同优先级 例如+和-有相同优先级

  计算顺序

  默认地运算符优先级表决定了哪个运算符在别运算符的前计算然而如果你想要改变它们计算顺序你得使用圆括号例如你想要在个表达式中让加法在乘法的前计算那么你就得写成类似(2 + 3) * 4样子

  结合规律

  运算符通常由左向右结合即具有相同优先级运算符按照从左向右顺序计算例如2 + 3 + 4被计算成(2 + 3) + 4些如赋值运算符那样运算符是由右向左结合即a = b = c被处理为a = (b = c)

  表达式

  使用表达式

  例5.1 使用表达式

#!/usr/bin/python
# Filename: expression.py
length = 5
breadth = 2
area = length * breadth
pr 'Area is', area
pr 'Perimeter is', 2 * (length + breadth)


  (源文件:expression.py下载)

  输出

$ python expression.py
Area is 10
Perimeter is 14


  它如何工作

  矩形长度和宽度存储在以它们命名变量中我们借助表达式使用它们计算矩形面积和边长我们表达式length * breadth结果存储在变量area中然后用pr语句打印在另个打印语句中我们直接使用表达式2 * (length + breadth)

  另外注意Python如何打印“漂亮”输出尽管我们没有在'Area is'和变量area的间指定空格Python自动在那里放了个空格这样我们就可以得到个清晰漂亮输出也变得更加易读(我们不需要担心输出的间空格问题)这是Python如何使生活变得更加轻松个例子

  概括

  我们已经学习了如何使用运算符、操作数和表达式——这些使任何基本组成部分接下来我们将学习如何通过语句在我们中使用这些部分

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: