《[精选]python入门教程》由会员分享,可在线阅读,更多相关《[精选]python入门教程(40页珍藏版)》请在金锄头文库上搜索。
1、起源,“1989年12月,我在寻找一门“课余”编程项目来打发圣诞节前后的时间。我的办公室会关门,但我有一台家用电脑,而且没有太多其它东西。我决定为当时我正构思的一个新的脚本语言写一个解释器,它是 ABC 语言的后代,对 UNIX / C 程序员会有吸引力。作为一个略微有些无关想法的人,和一个蒙提派森(Monty Python)的飞行马戏团的狂热爱好者,我选择了 Python 作为项目的标题。”,作者 : Guido Van Rossum (GvR),Computer Programming for Everybody,1999年,Guido向DARPA阐述Python语言的特性: 简单、直观、
2、强大 开源,以便任何人都可以为它做贡献 代码像纯英语那样容易理解 适用于短期开发的日常任务 这些想法中的一些已经成为现实。Python 已经成为一门流行的 编程语言,尤其是在互联网环境下。,特性,交互式命令行(Interactive console) 不只是脚本 强大易用的标准库 胶水语言(glue language) 收放自如(scalability) 不要括号,交互式命令行(Interactive console),Python可以单步直译运行。运行Python解释器或IDLE进入交互式命令行的环境,你可以在提示符号旁输入代码,按Enter键 print(Hello, Python!) H
3、ello, Python!,不只是脚本,原因是“脚本语言”泛指仅作简单编程任务的语言, 如Lua、JavaScript等,它们只能处理简单的任务 而Python是面向对象编程(OOP)的,支持异常处理和类型检查 Python的支持者较喜欢称它为一种高阶动态编程语言,强大易用的标准库,核心库不超过10Mb Html、Xml解析:BeautifulSoup, Expat 字符串处理:字典、数组切片、正则表达式 re 单元测试: PyUnit 代码版本控制: PySVN 网络访问: urllib2 图形模块: Tkinter、PyTCL、WxPython 串行化、多线程等 扩展标准库十分容易,胶水语
4、言(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)以及对多线程分布式操作的支持,使得程序可以用相同
5、的代码处理不同规模的数据, 以及并发的用户需求。,不要括号,Python使用缩进而不是括号来进行代码段标识,减少了视觉上的混乱,并且使程序变短,从而提高了程序的可读性。,用途,脚本程序 大型程序的原型开发 科学计算 网络应用 计算机图形编程,应用举例,Google - 谷歌在很多项目中用python作为网络应用的后端,如Google Groups、Gmail、Google Maps等,Google App Engine支持python作为开发语言 NASA - 美国宇航局,从1994年起把python作为主要开发语言 豆瓣网 - 图书、唱片、电影等文化产品的资料数据库网站 Torchlight
6、 -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
7、 print u你好!,程序运行方式,使用IDLE或python命令行工具进行交互式编程 调用解释器执行py脚本文件 写个bat 双击,行和缩进,Python使用缩进来表示代码块, 而不是使用大括号 来表示代码块, 缩进在python里有重要的语法意义。 建议使用四个空格来缩进代码, 不建议使用制表符。,注释,单行注释使用 # 号: # 第一个注释 print Hello, Python!; # 第二个注释 多行注释三个双引号或三个单引号: 这是多行注释,使用双引号。 这是多行注释,使用双引号。 这是多行注释,使用双引号。 ,Hello world,表达式 3 + (7 * 4) +i #bu
8、t no i+ 3 * 5 Hello + World not a and not c a b or c d,变量赋值 a = 4 3 a = “Hello World” x,y = 4+2,”python”,ass 语句 不做任何事时使用 if a b: pass else: c = a,条件,ifelifelse语句: 没有switch if a = +: b = + elif a = -: b = - else: b = None,布尔表达式 and, or, not if b = a and b c): print not expr, value is True,循环,While语句
9、while a b: a = a + 1,For语句(遍历序列的元素),for item in 3, 4, 10, 25: print item,# Print characters one at a time for c in Hello World: print c,# Loop over a range of numbers for i in range(0,100,2): print i for i in range(len(list1): print list1i,数字,Python 支持四种不同的数值类型: 整型(int)- 例:1024 长整型(long)- 例:1024L 浮点
10、型(float)-例:1024.56, 32.3+e18 复数(complex)- 例:2.5 + 3.14j,数学函数,abs(x) 绝对值 max(x1, x2,.)求最大值 min(x1, x2,.)求最小值 round(x ,n)求四舍五入值 sqrt(x)求平方根 sin(x)求正弦 cos(x)求余弦,字符串string,用单引号或双引号或三个引号创建字符串 s1 = “hello” s2 = hello 三引号创建的字符串可以跨越多行。 引号前小写的u表示这里创建的是一个 Unicode 字符串。 s = uHello World !,切片,序列开始位置 : 结束位置 序列开始位
11、置 : 结束位置 : 步长 右开区间 s = abcdef“ s2:4 #cd s2: #cdef s:2 #ab s: #abcdef s:2 #ace,字符串函数,s2 in s 字符串包含判断 S.find(sub ,start ,end) - int 字符串查找 S.rfind(sub ,start ,end) - int 字符串反向查找 S.replace(old, new, count)- string 字符串替换 S.strip(chars) - string 剔除两端空白,使用help函数查询类型帮助,列表list,赋值 a = 2, 3, 4 # A list of inte
12、ger 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,列表运算符,切片操作 a = 2, 3, 4, 5, 6 a:2 #2, 3 a2: #4, 5, 6 a2:4 #4, 5 a: # 2, 3, 4, 5, 6 删除元素del del a1,列表长度len len(a) 列表相加 a + b 复制 a * 2 包含判断 if 3 in a :
13、pass,列表方法,元组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
14、= /bin/sh # Set an element,字典运算符,删除元素del del a1 长度len len(a) 包含判断 if 3 in a : pass,字典方法,函数,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(ob
15、ject): #只在_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.depos
16、it(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里面没有指针 指向对象的都是引用(数值、字符串除外) 拷贝对象代码 importcopy ls1 = 1,”