资源预览内容
第1页 / 共39页
第2页 / 共39页
第3页 / 共39页
第4页 / 共39页
第5页 / 共39页
第6页 / 共39页
第7页 / 共39页
第8页 / 共39页
第9页 / 共39页
第10页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
起源 “1989年12月,我在寻找一门“课余” 编程项目来打发圣诞节前后的时间。我 的办公室会关门,但我有一台家用电脑 ,而且没有太多其它东西。我决定为当 时我正构思的一个新的脚本语言写一个 解释器,它是 ABC 语言的后代,对 UNIX / C 程序员会有吸引力。作为一 个略微有些无关想法的人,和一个蒙提 派森(Monty Python)的飞行马戏团 的狂热爱好者,我选择了 Python 作为 项目的标题。” 作者 : Guido Van Rossum (GvR) Computer Programming for Everybody 1999年,Guido向DARPA 阐述Python语言的特性: 简单、直观、强大 开源,以便任何人都可以为它做贡献 代码像纯英语那样容易理解 适用于短期开发的日常任务 这些想法中的一些已经成为现实。Python 已经成为一门流 行的 编程语言,尤其是在互联网环境下。 特性 交互式命令行(Interactive console) 不只是脚本 强大易用的标准库 胶水语言(glue language) 收放自如(scalability) 不要括号 交互式命令行(Interactive console) Python可以单步直译运行。运行Python解释器或IDLE 进入交互式命令行的环境,你可以在提示符号旁 输入代码,按Enter键 print(“Hello, Python!“) Hello, Python! 不只是脚本 原因是“脚本语言”泛指仅作简单编程任务的语言, 如Lua、JavaScript等,它们只能处理简单的任务 而Python是面向对象编程(OOP)的,支持异常处理和 类型检查 Python的支持者较喜欢称它为一种高阶动态编程语言 强大易用的标准库 核心库不超过10Mb Html、Xml解析:BeautifulSoup, Expat 字符串处理:字典、数组切片、正则表达式 re 单元测试: PyUnit 代码版本控制: PySVN 网络访问: urllib2 图形模块: Tkinter、PyTCL、WxPython 串行化、多线程等 扩展标准库十分容易 胶水语言(glue language) Python经常用作将不同语言编写的程序“粘”在一起的胶水 语言。 Google内部的很多项目使用C+编写性能要求极高的部分, 然后用Python调用相应的模块。 C/C+: Boost.Python使得 Python 和 C+ 的类库能互相调用(. pyc) Java: Jython 是用Java实现的Python,可同时使用二者的类库 .NET: IronPython是Python在.NET平台上的版本。 收放自如(scalability) Python内建的数据结构(variable, list 和 dict)以及对 多线程分布式操作的支持,使得程序可以用相同的代 码处理不同规模的数据, 以及并发的用户需求。 不要括号 Python使用缩进而不是括号来进行代码段标识,减少了视 觉上的混乱,并且使程序变短,从而提高了程序的可读 性。 用途 脚本程序 大型程序的原型开发 科学计算 网络应用 计算机图形编程 应用举例 Google - 谷歌在很多项目中用python作为网络应用 的后端,如Google Groups、Gmail、Google Maps 等,Google App Engine支持python作为开发语言 NASA - 美国宇航局,从1994年起把python作为主 要开发语言 豆瓣网 - 图书、唱片、电影等文化产品的资料数据 库网站 Torchlight -Python编写的大型3D游戏,原Blizzard 公司人员制作发行,开源。 Blender - 以C与Python开发的开源3D绘图软件 在科学研究中也得到广泛的应用。 这么强大! 赶紧开始吧! 开发环境 PyCharm(支持PEP8 语法规范、跨平台、远程调 试、上传) Ipython VIM (主要在linux下使用) 其它编辑器 UE,notepad+,editplus 工欲善其,事必先利其器 字符编码 Python默认代码文件为ASCII编码 不指定编码时,文件中包含非ASCII字符会报错 第一行加 #coding=utf-8,告诉编译器使用utf-8编码 #coding=utf-8 print u“你好!“ 程序运行方式 使用IDLE或python命令行工具进行交互式编程 调用解释器执行py脚本文件 写个bat 双击 行和缩进 Python使用缩进来表示代码块, 而不是使用大括号 来表示代码块, 缩进在python里有重要的语法意义。 建议使用四个空格来缩进代码, 不建议使用制表符。 注释 单行注释使用 # 号: # 第一个注释 print “Hello, Python!“; # 第二个注释 多行注释三个双引号或三个单引号: “ 这是多行注释,使用双引号。 这是多行注释,使用双引 号。 这是多行注释,使用双引号。 “ Hello world 表达式 3 + (7 * 4) +i #but no i+ 3 * 5 Hello + World not a and not c a b or c d 变量赋值 a = 4 int 字符串反向查找 S.replace(old, new, count)- string 字符串替换 S.strip(chars) - string 剔除两端空白 使用help函数查询类型帮助 列表list 赋值 a = 2, 3, 4 # A list of integer b = 2, 7, 3.5, “Hello” c = d = 2, a, b # 嵌套列表 e = x*x for x in range(10) 访问元素 x = a1 # Get 2nd element (0 is first) a1 = 5 z = d102 # Nested lists 列表运算符 p切片操作 a = 2, 3, 4, 5, 6 a:2 #2, 3 a2: #4, 5, 6 a2:4 #4, 5 a: # 2, 3, 4, 5, 6 p删除元素del del a1 p列表长度len len(a) p列表相加 a + b p复制 a * 2 p包含判断 if 3 in a : pass 列表方法 1list.append(obj) 在列表末尾添加新的对象 2list.count(obj) 统计 某个元素在列表中出现的次数 3list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的 列表) 4list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 5list.insert(index, obj) 将对象插入列表 6list.pop(obj=list-1) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 7list.remove(obj) 移除列表中某个值的第一个匹配项 8list.reverse() 反向列表中元素 9list.sort(func) 对原列表进行排序 元组tuple 元组的元素不能修改 元组使用小括号,列表使用方括号 Python的元组与列表类似,不同之处: tup1 = (physics, chemistry, 1997, 2000) tup2 = (1, 2, 3, 4, 5 ) tup3 = “a“, “b“, “c“, “d“; 字典dict 赋值 a = # An empty dictionary b = x: 3, y: 4 #有点类似json格式 c = uid: 105, login: beazley, name : David Beazley 访问元素 u = cuid # Get an element cshell = “/bin/sh“ # Set an element 字典运算符 删除元素del del a1 长度len len(a) 包含判断 if 3 in a : pass 字典方法 1dict.clear() 删除字典内所有元素 2dict.copy() 返回一个字典的浅复制 3dict.fromkeys(seq, val) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对 应的初始值 4dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值 6dict.items() 以列表返回可遍历的(键, 值) 元组数组 7dict.keys() 以列表返回一个字典所有的键 10dict.values() 以列表返回字典中的所有值 11pop(key,default) 删除字典给定键 key 所对应 的值,返回值为 被删除的值。key值必须 给出。 否则,返回default值。 12popitem() 随机返回并删除字典中的一对键 和值。 函数 def语句 def func1(a,b): func spec q = a/b r = a - q*b return r # 调用方式 a = func1(42,5) # a = 2 返回多个值 def func2(a,b): q = a/b r = a - q*b return q,r x,y = func2(42,5) # x = 8, y = 2 类class Class定义 class Account(object): #只在_init_中定义成员变量 def _init_(self, initial): self.balance = initial #析构 def _del_(self): pass def deposit(self, amount): self.balance += amount def withdraw(self, amount): self.balance -= amount def getBalance(self): return self.balance 使用class创建对象 a = Account(1000.0) a.deposit(550.23) a.deposit(100) a.withdraw(50) print a.getBalance() 模块 程序可分成多个模块: 一个py文件就是一个模块; # numbers.py def divide(a,b): q = a/b r = a - q*b return q,r def gcd(x,y): g = y while x 0: g = x x = y % x y = g return g 用import引入其它模块 import numbers x,y = numbers.divide(42,5) n = numbers.gcd(7291823, 5683) Import模块中的类型 from numbers import divide x,y = divide(42,5) 全局变量和局部变量 函数内定义的变量是局部变量 函数外定义的变量是全局变量 在函数内给一个全局变量赋值时,需要先用global 关 键字声明这个变量,否则编译器会尝试新建一个同名的 局部变量 指针?引用? Python里面没有指针 指向对象的都是引用(数值、字符串除外) 拷贝对象代码 import copy ls1 = 1,”test”,(3.4,7),“key”:1, “comment”:”your com
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号