起源“1989年12月,我在寻找一门“课余”编程项目来打发圣诞节前后的时间。我的办公室会关门,但我有一台家用电脑,而且没有太多其它东西。我决定为当时我正构思的一个新的脚本语言写一个解释器,它是ABC语言的后代,对UNIX/C程序员会有吸引力。作为一个略微有些无关想法的人,和一个蒙提·派森(MontyPython)的飞行马戏团的狂热爱好者,我选择了Python作为项目的标题。”作者:GuidoVanRossum(GvR)ComputerProgrammingforEverybody特性交互式命令行(Interactiveconsole)不只是脚本强大易用的标准库胶水语言(gluelanguage)收放自如(scalability)不要括号交互式命令行(Interactiveconsole)Python可以单步直译运行。运行Python解释器或IDLE进入交互式命令行的环境,你可以在提示符号旁输入代码,按Enter键print(Hello,Python!)Hello,Python!不只是脚本原因是“脚本语言”泛指仅作简单编程任务的语言,如Lua、JavaScript等,它们只能处理简单的任务而Python是面向对象编程(OOP)的,支持异常处理和类型检查Python的支持者较喜欢称它为一种高阶动态编程语言强大易用的标准库胶水语言(gluelanguage)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使用缩进而不是括号来进行代码段标识,减少了视觉上的混乱,并且使程序变短,从而提高了程序的可读性。用途应用举例这么强大!!!赶紧开始吧!开发环境PyCharm(支持PEP8语法规范、跨平台、远程调试、上传…)IpythonVIM(主要在linux下使用)其它编辑器UE,notepad++,editplus…工欲善其,事必先利其器字符编码Python默认代码文件为ASCII编码不指定编码时,文件中包含非ASCII字符会报错第一行加#coding=utf-8,告诉编译器使用utf-8编码#coding=utf-8printu你好!程序运行方式使用IDLE或python命令行工具进行交互式编程调用解释器执行py脚本文件写个bat双击行和缩进Python使用缩进来表示代码块,而不是使用大括号{}来表示代码块,缩进在python里有重要的语法意义。建议使用四个空格来缩进代码,不建议使用制表符。注释单行注释使用#号:#第一个注释printHello,Python!;#第二个注释多行注释三个双引号或三个单引号:这是多行注释,使用双引号。这是多行注释,使用双引号。这是多行注释,使用双引号。Helloworld表达式3+(7*4)++i#butnoi++3**5‘Hello’+‘World’notaandnotcaborcd变量赋值a=43a=“HelloWorld”x,y=4+2,”python”pass语句–不做任何事时使用ifab:passelse:c=a条件if…elif…else语句:没有switchifa==‘+’:b=‘+’elifa==‘-’:b=‘-’else:b=None布尔表达式–and,or,notifb=aandb=c:print‘boolisTrue’ifnot(baorcc):print‘notexpr,valueisTrue’循环While语句whileab:a=a+1For语句(遍历序列的元素)foritemin[3,4,10,25]:printitem#PrintcharactersoneatatimeforcinHelloWorld:printc#Loopoverarangeofnumbersforiinrange(0,100,2):printiforiinrange(len(list1)):printlist1[i]数字Python支持四种不同的数值类型:整型(int)-例:1024长整型(long)-例:1024L浮点型(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=u'HelloWorld!'切片序列[开始位置:结束位置]序列[开始位置:结束位置:步长]右开区间s=abcdef“s[2:4]#cds[2:]#cdefs[:2]#abs[:]#abcdefs[::2]#ace字符串函数s2ins字符串包含判断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]#Alistofintegerb=[2,7,3.5,“Hello”]c=[]d=[2,[a,b]]#嵌套列表e=[x*xforxinrange(10)]访问元素x=a[1]#Get2ndelement(0isfirst)a[1]=5z=d[1][0][2]#Nestedlists列表运算符切片操作a=[2,3,4,5,6]a[:2]#[2,3]a[2:]#[4,5,6]a[2:4]#[4,5]a[:]#[2,3,4,5,6]删除元素deldela[1]列表长度lenlen(a)列表相加a+b复制a*2包含判断if3ina: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={}#Anemptydictionaryb={’x’:3,’y’:4}#有点类似json格式c={’uid’:105,’login’:’beazley’,’name’:’DavidBeazley’}访问元素u=c[’uid’]#Getanelementc[’shell’]=/bin/sh#Setanelement字典运算符删除元素deldela[1]长度lenlen(a)包含判断if3ina: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语句deffunc1(a,b):‘’’funcspec’’’q=a/br=a-q*breturnr#调用方式a=func1(42,5)#a=2返回多个值deffunc2(a,b):q=a/br=a-q*breturnq,rx,y=func2(42,5)#x=8,y=2类classClass定义classAccount(object):#只在__init__中定义成员变量def__init__(self,initial):self.balance=initial#析构def__del__(self):passdefdeposit(self,amount):self.balance+=amountdefwithdraw(self,amount):self.balance-=amountdefgetBalance(self):returnself.balance使用class创建对象a=Account(1000.0)a.deposit(550.23)a.deposit(100)a.withdraw(50)printa.getBalance()模块程序可分成多个模块:一个py文件就是一个模块;#numbers.pydefdivide(a,b):q=a/br=a-q*breturnq,rdefgcd(x,y):g=ywhilex0:g=xx=y%xy=greturng全局变量和局部变量函数内定义的变量是局部变量函数外定义的变量是全局变量在函数内给一个全局变量赋值时,需要先用global关键字声明这个变量,否则编译器会尝试新建一个同名的局部变量指针?引用?Python里面没有指针指向对象的都是引用(数值、字符串除外)拷贝对象代码importcopyls1=[1,”test”,(3.4,7),{“key”:1,“comment”:”yourcomment”}]ls2=copy.deepcopy(ls1)Python哲学优美胜过丑陋明确胜过含蓄简单胜过复杂复杂胜过难懂扁平胜过嵌套稀疏胜过密集2019POWERPOINTSUCCESS2020/2/242019THANKYOUSUCCESS2020/2/24