help()
查看函数或模块的帮助。Python常用数据类型有字面意义上的常量,数(包含整数、长整数、浮点数和复数),字符串和对象,另外编码过程中要特别注意缩进。
一、实验说明
1. 环境登录
无需密码自动登录,系统用户名shiyanlou 若不小心登出后,直接刷新页面即可
2. 环境使用
实验报告可以在个人主页中查看,其中含有每次实验的截图及笔记,以及每次实验的有效学习时间(指的是在实验桌面内操作的时间,如果没有操作,系统会记录为发呆时间)。这些都是您学习的真实性证明。
3. 参考文档
《python官方手册》http://python.usyiyi.cn/python_278/tutorial/index.html
《简明Python教程》http://woodpecker.org.cn/abyteofpython_cn/chinese/
《Python核心编程(第二版)》
4.Python介绍
Python 是一门简单易学且功能强大的编程语言。 它拥有高效的高级数据结构,并且能够用简单而又高效的方式进行面向对象编程。 Python 优雅的语法和动态类型,再结合它的解释性,使其在大多数平台的许多领域成为编写脚本或开发应用程序的理想语言。
5.安装Python
Linux操作系统已经内置了Python,如果是Windows的话,需要到Python官网下载,基本一直点击下一步就可以安装到Win32系统。本实验在Linux下进行,所以无需再安装。现在几乎所有的Linux发行版,都会预装python2.x版本。
请选择python2.7的版本,这个版本是官方在python3.0之前的最后一个版本,用于和最新的3.x过渡的,所以2.7不仅包含了老版本的所有属性,也含有了新版的很多特性,作为入门的话,是非常合适的。
二、第一个Python程序
Python编程中由两种方法可以运行你的程序——使用交互式的带提示符的解释器或传统的使用源文件的方式。
我们将会使用这两种方式分别输出——"hello, world"
1.调用Python交互式解释器
在Linux命令行的shell提示符下键入python,启动解释器。 然后输入print 'hello, world'
,然后按Enter键。你应该可以看到输出的单词hello, world。
Python解释器会在下一行立即给出你输出!你刚才键入的是一句Python 语句 。我们使用print来打印你提供给它的值。这里,我们提供的是字符串'hello, world',它会被迅速地打印在屏幕上。
如何退出Python提示符 如果你使用的是Linux,那么按Ctrl+d退出提示符(意思是按住Ctrl键再按d,本课程中出现的组合键都会这样表示)。 如果是在Windows命令行中,则按Ctrl+z再按Enter。 有一种更通用的方式,直接输入
exit()
这个函数,回车之后就会退出。
当输入的程序有错误的时候,解释器将捕获到这个错误,并打印这个错误信息和栈跟踪器。
以上的错误是因为在print前面多了一个缩进,所以报错提示:意外出现的缩进
这里涉及到了Python代码风格的解释,提供一下链接,按需求学习不同的代码风格:
如果选择使用pep8风格的话,在linux下有个方便的工具可以对你的python源代码进行格式检查,并提示格式错误在源代码的第几行和错误的原因:
$ sudo apt-get update
$ sudo apt-get install pep8
pep8可以直接使用:
$ pep8 file.py
如果file.py
有任何违背了pep8格式的地方,都会详细的错误信息都会打印出来,我们可以根据显示的信息去修改我们源代码。
2. 源文件运行程序
首先创建一个源文件并用vim打开:
$ vim hello.py
执行 Python 脚本: BSD 类的 Unix 系统中,Python 脚本可以像 Shell 脚本那样直接执行。只要在脚本文件第一行,指定文件和模式。
#!/usr/bin/env python
源程序编码:默认情况下,Python 源文件是 UTF-8 编码。也可以在 #! 行(首行)后插入至少一行特殊的注释行来定义源文件的编码。
#-*- coding: utf-8 -*-
所以我们最后的源文件是这样的:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# Filename : hello.py
print 'Hello, World'
:wq
保存并退出
运行效果:
如果你得到的输出与上面所示的一样,那么恭喜!——你已经成功地运行了你的第一个Python程序。
万一你得到一个错误,那么请确保你键入的程序准确无误,然后再运行一下程序。注意Python是大小写敏感的,即print与Print不一样——注意前一个是小写p而后一个是大写P。另外,确保在每一行的开始字符前没有空格或者制表符——我们将在后面讨论为什么这点是很重要的。
它如何工作
让我们思考一下这个程序的前3行。它们被称作注释——任何在#符号右面的内容都是注释。注释主要作为提供给程序读者的笔记。
Python至少应当有第一行那样的特殊形式的注释。它被称作组织行——源文件的头两个字符是#!,后面跟着一个程序。这行告诉你的Linux/Unix系统当你执行你的程序的时候,它应该运行哪个解释器。这会在下一节做详细解释。注意,你总是可以通过在命令行直接指定解释器,从而在任何平台上运行你的程序。就如同命令python hello.py一样。
3.查看帮助
>>> help(MODULE_NAME)
将MODULE_NAME替换为需要获得帮助的函数名或模块名即可
>>> help(dir)
查看dir函数帮助,点击q可以退出
4. 可执行的Python程序
首先我们需要通过chmod
命令,给程序可执行的许可,然后运行程序。
chmod命令用来改变文件的权限,给系统中所有用户对这个源文件的执行许可。然后我们可以直接通过指定源文件的位置来执行程序。我们使用./
来指示程序位于当前目录。
为了更加有趣一些,你可以把你的文件名改成hello(去掉.py后缀),然后运行./hello。这样,这个程序仍然可以工作,因为系统知道它必须用源文件第一行指定的那个解释器来运行程序。
另外,我们可以直接使用python hello.py
运行程序,像这样:
三、Python基本概念
仅仅打印"hello, world"是不够的!我们还要做更多的事情——得到一些输入(input),然后做一些操作,再从中得到一些输出(output)。在Python中,我们可以使用常量和变量来完成这些工作。
我们将用很少的时间,来介绍Python的一些基本概念。
1. 字面意义上的常量
一个字面意义上的常量的例子是如同5、1.23、9.25e-3这样的数,或者如同'This is a string'、"It's a string!"这样的字符串。它们被称作字面意义上的,因为它们具备字面的意义——你按照它们的字面意义使用它们的值。数2总是代表它自己,而不会是别的什么东西——它是一个常量,因为不能改变它的值。因此,所有这些都被称为字面意义上的常量。
2. 数
在Python中有4种类型的数 —— 整数、长整数、浮点数和复数。 一些例子:
- 2是一个整数的例子。
- 长整数不过是大一些的整数。(
10000000000L
) - 3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10^-4。(0.00012等价于1.2e-4)
- 带有后缀 j 或 J 就被视为虚数。带有非零实部的复数写为 (real+imagj) ,或者可以用 complex(real, imag) 函数创建。
>>> 1j * 1J (-1+0j) >>> 1j * complex(0, 1) (-1+0j) >>> 3+1j*3 (3+3j) >>> (3+1j)*3 (9+3j) >>> (1+2j)/(1+1j) (1.5+0.5j)
3. 字符串
字符串是字符的序列。字符串基本上就是一个个单词组成的语句。
我几乎可以保证你在每个Python程序中都要用到字符串,所以请特别留心下面这部分的内容。下面告诉你如何在Python中使用字符串。
使用单引号(')
你可以用单引号指示字符串,就如同'Quote me on this'
这样。所有的空白,即空格和制表符都照原样保留。
使用双引号(")
在双引号中的字符串与单引号中的字符串的使用完全相同,例如"What's your name?"
。
使用三引号('''或""", 三个单引号或三个双引号)
利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。例如:
'''This is a multi-line string. This is the first line.
This is the second line.
"What's your name?," I asked.
He said "Bond, James Bond."
'''
转义符
假设你想要在一个字符串中使用单引号('),那么你该怎么指示这个字符串?例如,这个字符串是What's your name?。你肯定不能用'What's your name?'
来指示它,因为Python会弄不明白这个字符串从何处开始,何处结束。所以,你需要指明单引号而不是字符串的结尾。可以通过转义符来完成这个任务。你用\'
来指示单引号——注意这个反斜杠。现在你可以把字符串表示为'What\'s your name?'
。
另一个表示这个特别的字符串的方法是"What's your name?"
,即用双引号。类似地,要在双引号字符串中使用双引号本身的时候,也可以借助于转义符。另外,你可以用转义符\\
来指示反斜杠本身。
值得注意的一件事是,在一个字符串中,行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行。例如:
"This is the first sentence. \
This is the second sentence."
等价于"This is the first sentence. This is the second sentence."
自然字符串
如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀r或R来指定。例如r"Newlines are indicated by \n"
。
一定要用自然字符串处理正则表达式。否则会需要使用很多的反斜杠。例如,后向引用符可以写成'\\1'或r'\1'
。
Unicode字符串
Unicode是国际文本的标准方法。如果你想要用中文或阿拉伯语等写文本,那么你需要有一个支持Unicode的编辑器。类似地,Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U。例如,u"This is a Unicode string."
记住,在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。
按字面意义级联字符串
如果你把两个字符串按字面意义相邻放着,他们会被Python自动级联。例如,'What\'s' 'your name?'
会被自动转为"What's your name?"
。
标识符的命名
标识符是一个笼统的概念,包括了变量名,函数名,类名,常量名等等。 标识符是用来标识某样东西的名字。在命名标识符的时候,你要遵循这些规则:
-
标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(' _ ')。
-
标识符名称的其他部分可以由字母(大写或小写)、下划线(' _ ')或数字(0-9)组成。
-
标识符名称是对大小写敏感的。例如,myname和myName不是一个标识符。注意前者中的小写n和后者中的大写N。
-
有效标识符名称的例子有
i、__my_name、name_23和a1b2_c3
。 -
无效标识符名称的例子有2things、this is spaced out和my-name。
4. 对象
记住,Python把在程序中用到的任何东西都称为对象。这是从广义上说的。因此我们不会说“某某 东西 ”,我们说“某个 对象 ”。
面向对象编程 就每一个东西包括数、字符串甚至函数都是对象这一点来说,Python是极其完全地面向对象的。
我们将看一下如何使用变量和字面意义上的常量。
如何编写Python程序 下面是保存和运行Python程序的标准流程。
- 打开你最喜欢的编辑器,这里推荐使用vim。
- 输入例子中的程序代码。
- 用注释中给出的文件名把它保存为一个文件,按照惯例把所有的Python程序都以扩展名.py保存,
:w var.py
。 - 运行解释器命令
python var.py
或者使用IDLE运行程序。你也可以使用先前介绍的可执行的方法。
使用变量和字面意义上的常量
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
输出
下面来说明一下这个程序如何工作。首先我们使用赋值运算符(=)把一个字面意义上的常数5赋给变量i。这一行称为一个语句。语句声明需要做某件事情,在这个地方我们把变量名i与值5连接在一起。接下来,我们用print语句打印i的值,就是把变量的值打印在屏幕上。
然后我们对i中存储的值加1,再把它存回i。我们打印它时,得到期望的值6。
类似地,我们把一个字面意义上的字符串赋给变量s然后打印它。
5. 缩进
空白在Python中是重要的。事实上是行首的空白是重要的。它称为缩进。在逻辑行首的空白(空格和制表符)用来决定缩进层次,从而用来决定语句的分组。
这意味着同一层次的语句必须有相同的缩进。每一组这样的语句称为一个块。我们将在后面的章节中看到有关块的用处的例子。
你需要记住的一样东西是错误的缩进会引发错误。例如:
i = 5
print 'Value is', i # Error! Notice a single space at the start of the line
print 'I repeat, the value is', i
当你运行这个程序的时候,你会得到下面的错误:
File "whitespace.py", line 4
print 'Value is', i # Error! Notice a single space at the start of the line
^
SyntaxError: invalid syntax
注意,在第二行的行首有一个空格。Python指示的这个错误告诉我们程序的语法是无效的,即程序没有正确地编写。它告诉你,你不能随意地开始新的语句块 (当然除了你一直在使用的主语句块)。何时你能够使用新语句块,将会在后面的章节,如控制流中详细介绍。
如何缩进
不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。强烈建议你在每个缩进层次使用单个制表符或两个或四个空格。选择这三种缩进风格之一。更加重要的是,选择一种风格,然后坚持使用它,即只使用这一种风格。