《python入门教程.pptx》由会员分享,可在线阅读,更多相关《python入门教程.pptx(39页珍藏版)》请在优知文库上搜索。
1、起源“1989年12月,我在寻找一门“课余”编程项目来打发圣诞节前后的时间。我的办公室会关门,但我有一台家用电脑,而且没有太多其它东西。我决定为当时我正构思的一个新的脚本语言写一个解释器,它是 ABC 语言的后代,对 UNIX / C 程序员会有吸引力。作为一个略微有些无关想法的人,和一个蒙提派森(Monty Python)的飞行马戏团的狂热爱好者,我选择了 Python 作为项目的标题。”作者作者 :Guido Guido Van Van RossumRossum ( (GvRGvR) )Computer Programming for EverybodyComputer Programmi
2、ng for Everybody1999年,Guido向DARPA 阐述Python语言的特性:简单、直观、强大开源,以便任何人都可以为它做贡献代码像纯英语那样容易理解适用于短期开发的日常任务这些想法中的一些已经成为现实。Python 已经成为一门流行的编程语言,尤其是在互联网环境下。特性特性交互式命令行(Interactive console)不只是脚本强大易用的标准库胶水语言(glue language)收放自如(scalability)不要括号交互式命令行(Interactive console)Python可以单步直译运行。运行Python解释器或IDLE进入交互式命令行的环境,你可以
3、在提示符号旁输入代码,按Enter键 printprint(Hello, Python!) Hello, Python!不只是脚本原因是“脚本语言”泛指仅作简单编程任务的语言,如Lua、JavaScript等,它们只能处理简单的任务而Python是面向对象编程(OOP)的,支持异常处理和类型检查Python的支持者较喜欢称它为一种高阶动态编程语言强大易用的标准库核心库不超过10MbHtml、Xml解析:BeautifulSoup, Expat字符串处理:字典、数组切片、正则表达式 re单元测试: PyUnit代码版本控制: PySVN网络访问: urllib2图形模块: Tkinter、PyT
4、CL、WxPython串行化、多线程等扩展标准库十分容易扩展标准库十分容易胶水语言(glue language)Python经常用作将不同语言编写的程序“粘”在一起的胶水语言。Google内部的很多项目使用C+编写性能要求极高的部分,然后用Python调用相应的模块。C/C+: C/C+: Boost.Python使得 Python 和 C+ 的类库能互相调用(.pyc)Java: Java: Jython 是用Java实现的Python,可同时使用二者的类库.NET:.NET:IronPython是Python在.NET平台上的版本。收放自如(scalability)Python内建的数据结
5、构(variable, list 和 dict)以及对多线程分布式操作的支持,使得程序可以用相同的代码处理不同规模的数据, 以及并发的用户需求。不要括号Python使用缩进而不是括号来进行代码段标识,减少了视觉上的混乱,并且使程序变短,从而提高了程序的可读性。用途脚本程序大型程序的原型开发科学计算网络应用计算机图形编程应用举例应用举例Google - 谷歌在很多项目中用python作为网络应用的后端,如Google Groups、Gmail、Google Maps等,Google App Engine支持python作为开发语言NASA - 美国宇航局,从1994年起把python作为主要开发
6、语言豆瓣网 - 图书、唱片、电影等文化产品的资料数据库网站Torchlight -Python编写的大型3D游戏,原Blizzard公司人员制作发行,开源。Blender - 以C与Python开发的开源3D绘图软件在科学研究中也得到广泛的应用。这么强大!赶紧开始吧!开发环境PyCharm(支持PEP8 语法规范、跨平台、远程调试、上传)IpythonVIM (主要在linux下使用)其它编辑器UE,notepad+,editplus工欲善其,事必先利其器字符编码Python默认代码文件为ASCII编码不指定编码时,文件中包含非ASCII字符会报错第一行加 #coding=utf-8,告诉编译
7、器使用utf-8编码#coding=utf-8print u你好!程序运行方式使用IDLE或python命令行工具进行交互式编程调用解释器执行py脚本文件写个bat双击行和缩进Python使用缩进来表示代码块,而不是使用大括号 来表示代码块,缩进在python里有重要的语法意义。建议使用四个空格来缩进代码,不建议使用制表符。注释 单行注释使用 # 号:# 第一个注释print Hello, Python!; # 第二个注释多行注释三个双引号或三个单引号: 这是多行注释,使用双引号。 这是多行注释,使用双引号。 这是多行注释,使用双引号。 Hello world 表达式3 + (7 * 4)+i
8、 #but no i+3 * 5Hello + Worldnot a and not ca b or c d变量赋值a = 4 3a = “Hello World”x,y = 4+2,”python”pass 语句 不做任何事时使用if a = a and b = c:print bool is Trueif not (b c): print not expr, value is True循环While语句while a int字符串查找S.rfind(sub ,start ,end) - int字符串反向查找S.replace(old, new, count)- string字符串替换S.s
9、trip(chars) - string剔除两端空白使用help函数查询类型帮助列表list赋值a = 2, 3, 4 # A list of integerb = 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 = 5z = d102 # Nested lists列表运算符p切片操作a = 2, 3, 4, 5, 6a:2 #2, 3a2: #4, 5, 6a2:4 #4, 5a: # 2, 3, 4, 5, 6p删除元
10、素deldel a1p列表长度lenlen(a)p列表相加a + bp复制a * 2p包含判断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.
11、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 dictionaryb = x: 3, y: 4 #有点类似json格式c = uid: 105, login: beazley, name : D
12、avid Beazley 访问元素u = cuid # Get an elementcshell = /bin/sh # Set an element字典运算符删除元素deldel a1长度lenlen(a)包含判断if 3 in a : pass字典方法1dict.clear()删除字典内所有元素2dict.copy()返回一个字典的浅复制3dict.fromkeys(seq, val)创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值4dict.get(key, default=None)返回指定键的值,如果值不在字典中返回default值6dict.ite
13、ms()以列表返回可遍历的(键, 值) 元组数组7dict.keys()以列表返回一个字典所有的键10dict.values()以列表返回字典中的所有值11pop(key,default)删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。12popitem()随机返回并删除字典中的一对键和值。函数def语句def func1(a,b):func specq = a/br = a - q*breturn r# 调用方式a = func1(42,5) # a = 2返回多个值def func2(a,b):q = a/br = a - q*bre
14、turn q,rx,y = func2(42,5) # x = 8, y = 2类classClass定义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): re
15、turn self.balance使用class创建对象a = Account(1000.0)a.deposit(550.23)a.deposit(100)a.withdraw(50)print a.getBalance()模块程序可分成多个模块:一个py文件就是一个模块;# numbers.pydef divide(a,b):q = a/br = a - q*breturn q,rdef gcd(x,y):g = ywhile x 0:g = xx = y % xy = greturn g用import引入其它模块import numbersx,y = numbers.divide(42,5
16、)n = numbers.gcd(7291823, 5683)Import模块中的类型from numbers import divide x,y = divide(42,5)全局变量和局部变量函数内定义的变量是局部变量函数外定义的变量是全局变量在函数内给一个全局变量赋值时,需要先用global关键字声明这个变量,否则编译器会尝试新建一个同名的局部变量指针?引用?Python里面没有指针指向对象的都是引用(数值、字符串除外)拷贝对象代码importcopyls1 = 1,”test”,(3.4,7),“key”:1, “comment”:”your comment”ls2 = copy.deepcopy(ls1)Python哲学优美胜过丑陋 明确胜过含蓄 简单胜过复杂 复杂胜过难懂 扁平胜过嵌套 稀疏胜过密集