Python简明教程复习

2-25 1,405 views

获取帮助:

[root@localhost ~]# python
Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)

>>> help(‘print’)
The “print“ statement

常量和变量

常量:不能改变它的值(数或者字符串)的量叫做常量。

在Python中有4种类型的数——整数、长整数、浮点数和复数。

  • 2是一个整数的例子。
  • 长整数不过是大一些的整数。
  • 3.2352.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4
  • (-5+4j)(2.3-4.6j)是复数的例子。

在Python中有4种类型的数——整数、长整数、浮点数和复数。

字符串

字符串是 字符的序列 。字符串基本上就是一组单词。

使用单引号(‘)与双引号(“)

去除变量的意义,使变量以常量的形式输出

使用三引号(’‘’或”“”):注释

转义符(\)

想在一个字符串中包含单引号的时候可以使用转义符。 或者可以再双引号中包含单引号

还有一个用法:在一个字符串中,行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行。  跟mysql交互模式中用法一样。

自然字符串(rR

如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。例如r"Newlines are indicated by \n"

一定要用自然字符串处理正则表达式。否则会需要使用很多的反斜杠。例如,后向引用符可以写成'\\1'r'\1'

Unicode字符串

Unicode是书写国际文本的标准方法。如果你想要用你的母语如北印度语或阿拉伯语写文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀uU。例如,u"This is a Unicode string."

记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。

字符串是不可变的:一旦创造了一个字符串,就不能再改变它了,后面会介绍这么做的好处。

按字面意义级连字符串:

如果你把两个字符串按字面意义相邻放着,他们会被Python自动级连。例如,'What\'s' 'your name?'会被自动转为"What's your name?"

变量:我们需要一种既可以储存信息 又可以对它们进行操作的方法。这就是变量

变量就是我们想要的东西——它们的值可以变化,即你可以使用变量存储任何东西。

变量的命名:

变量是标识符的例子。 标识符 是用来标识 某样东西 的名字。在命名标识符的时候,你要遵循这些规则:

  • 标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’)

  • 标识符名称的其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字(0-9)组成

  • 标识符名称是对大小写敏感的。例如,mynamemyName不是一个标识符。注意前者中的小写n和后者中的大写N

  • 有效 标识符名称的例子有i__my_namename_23a1b2_c3

  • 无效 标识符名称的例子有2thingsthis is spaced outmy-name

数据类型:

变量可以处理不同类型的值,称为数据类型

基本的类型是数和字符串,怎么用创造我们自己的类型?

对象

Python即是面向过程(脚本和函数),也是面向对象的语言(应用程序)。

Python把在程序中用到的任何东西都称为 对象 。这是从广义上说的。因此我们不会说“某某 东西 ”,我们说“某个 对象 ”。

就每一个东西包括数、字符串甚至函数都是对象这一点来说,Python是极其完全地面向对象的。

使用变量和字面意义上的常量

# Filename : var.py
i = 5
print i
i = i + 1
print i

s = '''This is a multi-line string.
This is the second line.'''

print s

输出:

$ python var.py
5
6
This is a multi-line string.
This is the second line.

它如何工作

下面来说明一下这个程序如何工作。首先我们使用赋值运算符(=)把一个字面意义上的常数5赋给变量i。这一行称为一个语句。语句声明需要做某件事情,在这个地方我们把变量名i与值5连接在一起。接下来,我们用print语句打印i的值,就是把变量的值打印在屏幕上。

然后我们对i中存储的值加1,再把它存回i。我们打印它时,得到期望的值6

类似地,我们把一个字面意义上的字符串赋给变量s然后打印它。

使用变量时只需要给它们赋一个值。不需要声明或定义数据类型。

逻辑行与物理行

物理行是你在编写程序时所 看见 的。逻辑行是Python 看见 的单个语句。Python假定每个 物理行 对应一个 逻辑行 。

使用分号实现一个物理行中使用多于一个逻辑行  (尽量少用或不用分号,让代码更加易读)

例如:i = 5; print i

使用反斜杠实现一个在多个物理行中写一个逻辑行

例如:s = 'This is a string. \
This continues the string.'

print s

缩进

空白在Python中是重要的。事实上行首的空白是重要的。它称为缩进。在逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。

这意味着同一层次的语句必须有相同的缩进。每一组这样的语句称为一个

如何缩进:

不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。我 强烈建议 你在每个缩进层次使用 单个制表符 或 两个或四个空格 。
选择这三种缩进风格之一。更加重要的是,选择一种风格,然后一贯地使用它,即 只 使用这一种风格。

 

运算符与表达式:

简介

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

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

运算符

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

运算符与它们的用法:

运算符 名称 说明 例子
+ 两个对象相加 3 + 5得到8。’a’ + ‘b’得到’ab’。
得到负数或是一个数减去另一个数 -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(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333
// 取整除 返回商的整数部分 4 // 3.0得到1.0
% 取模 返回除法的余数 8%3得到2。-25.5%2.25得到1.5
<< 左移 把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即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返回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为False,它返回True。 x = True; not y返回False。
and 布尔“与” 如果x为False,x 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会首先计算表中较下面的运算符,然后在计算列在表上部的运算符。

运算符 描述
lambda Lambda表达式
or 布尔“或”
and 布尔“与”
not x 布尔“非”
in,not in 成员测试
is,is 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)

表达式

使用表达式

#!/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语句打印。在另一个打印语句中,我们直接使用表达式2 * (length + breadth)的值。

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

 

 

控制流

简介

在到目前为止我们所见到的程序中,总是有一系列的语句,Python忠实地按照它们的顺序执行它们。如果你想要改变语句流的执行顺序,该怎么办呢?例如,你想要让程序做一些决定,根据不同的情况做不同的事情,例如根据时间打印“早上好”或者“晚上好”。

你可能已经猜到了,这是通过控制流语句实现的。在Python中有三种控制流语句——ifforwhile

if语句

if语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ), 否则 我们处理另外一块语句(称为 else-块 )。 else 从句是可选的。

使用if语句

 

 

 

异常

Python默认的错误处理器会被调用,它会终止程序的运行,并且打印一个错误消息,我们已经看到过这样的处理。

Python常用工具ipython安装与使用

IPython是Python的交互式Shell,提供了代码自动补完,自动缩进,高亮显示,执行Shell命令等非常有用的特性。 特别是代码补全功能非常实用。 安装ipython也非...

阅读全文

  1. Pingback: wow gold

  2. Pingback: 防火板