1、Python 学习手册2014/01/16第一部分:使用入门1 Python 安装与测试1.1 下载地址http:/www.python.org/download/1.2 安装注意选择添加系统环境变量1.3 测试Win+Rcmdpython2 如何运行程序2.1 基本语句 2*8 表示 28; Windows 下可以使用 Ctrl+Z 来推出 Python。 * 对于数字来说,表示相乘,对于字符来说表示重复。不懂得话直接在交互模式下尝试。 交互提示模式也是一个测试程组件的地方:引入一个预编码的模块,测试里面的函数,获得当前工作目录的名称。 注意缩进(4 个空格) ; 回车(Enter)两次,多
2、行语句才会执行。 执行 python,注意文件后缀为.py。2.2 UNIX 可执行脚本(#!) 他们的第一行是特定的。脚本的第一行往往以字符#!开始( 常叫做“hash bang”),其后紧跟着机器 Python 解释器的路径。 他们往往都拥有可执行的权限。Chmod+x file.py 来修改可执行权限。注意没有后缀名。Unix 下运行命令为: % brain运行结果: The Bright Side of Life2.3 Unix env 查找技巧避免硬编码 Python 解释器的路径,env 程序可以通过系统的搜索路径的设置定位 Python 解释器。这种方式比 2.2 中的方法更常用
3、。2.4 Windows 下 input 的技巧在 windows 系统下,双击 script1.py 后,会一闪而过,这时候就可以使用 input()。一般来说 input 读取标准输入的下一行,如果还没有得到输入,就一直等待输入。从而达到了让脚本暂停的效果。运行结果:缺陷:看不到错误信息。2.5 模块导入和重载 每一个以扩展名 py 结尾的 Python 源代码文件都是一个模块。 其他模块可以通过导入这个模块读取这个模块的基础知识。 如上 import 可以运行,但只是在每次会话的第一次运行,在第一次导入之后,其他的导入都不会再工作。 (这是有意设计的结果,导入是一个开销很大的操作)2.6
4、 模块的显要特性:属性作为替代方案,可以通过这样的语句从模块语句中获得变量名:从技术上讲,from 复制了模块的属性,以便属性能够成为接收者的直接变量。实际应用中,模块文件往往定义了一个以上的可被外部文件使用的变量名。下面这个例子中定义三个变量,并且在文件内部也对这三个变量进行了调用: 注意,结果显示在括号里,这里面实际是元组。下面代码返回一个 Python 字符串的列表:(后面会介绍列表) dir 返回指定模块内部的所有属性:2.7 模块和命名空间 每一个模块文件是一个独立完备的变量包,即一个命名空间。 正是由于模块将变量封装为不同部分,Python 具有了能够避免命名冲突的优点。 就目前而
5、言,模块是一个不需要重复输入而可以反复运行代码的方法。2.8 import 和 reload 的使用注意事项 reload 是不可传递的,重载一个模块的话只会重载该模块,而不能重载该模块所导入的任何模块。 避免使用 reload 和 import 启动程序,这是一个好的建议。2.9 使用 exec 运行模块文件更多方法运行模块文件中保存的代码:exec 的优点:不需要导入模块,每次都重新运行文件。exec 缺点:变量值可能会被覆盖2.10 IDLE 用户界面 Ctrl+O 打开一个 python 文件进行编辑 在编辑界面按 F5 进行运行 IDLE 可进行定制,如字体及颜色 IDLE 中没有清
6、屏选项 可以开启 Debugger 功能 使用之前的命令 Alt + P 或 Alt + N类型和运算3 Python 对象类型3.1 数字3.2 字符串3.2.1 len 与字符串截取3.2.2 + 和 * 运算符3.2.3 不可变性But we can run expression to make new objects:3.2.4 类型特定的方法 find 返回-1 表示不存在;=0 则表示第一个匹配的索引位置 replace 方法并不会改变原来的字符串的值 split 方法用于字符串的分割,得到的是 list 大小写转换 判断对象类型#Remove whitespace charact
7、ers on the right side#Formating expression(all) 表达式形式或字符串方法调用3.2.5 寻求帮助# dir 方法方法返回一个列表,包含对象所有的属性。由于方法是函数属性,它们也会在这个列表中出现:# dir 方法简单的给出了方法的名称,要查询它们是做什么的,可以使用 help 函数:3.2.6 编写字符串的其他方法# 反斜线转义序列表示特殊字符: n 表示换行,t 表示 tab# python 允许字符串包括在双引号或单引号中(它们表示着相同的东西) 。# 也允许在三个引号(单引号或双引号)中包括多行字符串常量。当采用这种方式的时候,所有的行都合并
8、在一起,并在每一行的末尾添加换行符。三个引号(单引号或双引号)没怎么搞明白3.2.7 模式匹配3.3 列表无固定大小,大小可变,可修改列表的大小。3.3.1 序列操作3.3.2 类型特定的操作 append 尾部扩充列表大小 pop 移除给定偏移量的一项 sort 默认按照升序进行排序 reverse 对队列进行翻转 Insert 指定位置插入元素 Remove 移除指定元素3.3.3 边界检查Python 不允许引用不存在的元素:3.3.4 嵌套支持任意的嵌套,能够以任意的组合对其进行嵌套,并可以多个层次进行嵌套:(这个特性的直接应用就是实现矩阵)3.3.5 列表解析假设我们要从列举的矩阵中
9、提取出第二列。因为矩阵是按照行进行存储的,所以通过简单的索引即可获取行,使用列表解析可以同样简单地获得列:还可以更复杂,结合运算和条件判断:3.3.6 Python 的()中的解析语法# 实际上,在 python3.0 中,列表、集合和字典都可以用解析来创建:3.3.7 提示:更强大的数值计算可以查看 NumPy 相关内容3.4 字典不是序列,而是映射,可将键映射到值,大小可变,无序。3.4.1 映射操作创建字典:3.4.2 重访嵌套3.4.3 键的排序:for 循环注意字典式无序的:序列化输出:有序的:(sorted 自动对字典的键进行排序)for 循环实现小写转大写:while 循环:3.
10、4.4 迭代和优化像下面这样的任何列表解析表达式都可以计算一列数字的平方:能够编写成一个等效的 for 循环,通过在运行的时手动添加列表来创建最终的列表:尽管这样,列表解析和相关的函数编程工具,如 map 和 filter,通常运行得比 for 循环快(也许快了两倍):这是对有大数据结合的程序有重大影响的特性一。3.4.5 不存在的键:if 测试3.5 元组元组是序列,具有不可变性,编写在圆括号中,支持任意类型,支持嵌套。3.5.1 元组的简单操作3.5.2 为什么要用元组元组的关键是不可变性,提供了一种完整性的约束,对于编写大型程序是非常方便的。3.6 文件创建文件,调用内置的 open 函
11、数:传递一个外部的文件名以及一个处理模式的字符串写操作:读操作:二进制文件3.7 其他核心类型【新增】 (e.g. 集合)3.7.1 集合集合、更像是一个无值的字典的键3.7.2 十进制数和分数3.7.3 布尔值True 对应 1False 对应 0特殊占位符对象 None(通常用来初始化名字和对象 )3.8 如何破坏代码的灵活性(type)允许交互的探究对象,这个函数的实际应用是,允许编写代码来检查它所处理的对象的类型。实际上,Python 脚本中至少有 3 种方法可以做到这点:但是,判断类型这种做法往往是错误的,因为限制了 Python 的语法和优势。3.9 用户定义的类4 数字4.1 Python 的数字类型4.1.1 数字常量4.1.2 内置数学工具和扩展4.1.3 Python 表达式操作符4.2 在实际应用中的数字4.2.1 变量和基本的表达式