Python培训Python基本语法与编程2目标使用Python….….Python基础篇-LifeIsShortYouNeedPythonPython简介Python是一种开源的、解析性的,面向对象的编程语言。Python使用一种优雅的语法,可读性强Python支持类和多层继承等的面向对象编程技术。Python可运行在多种计算机平台和操作系统中,如unix,windows,MacOS,OS/2等等使用python安装python,请参阅:脚本:交互式运行(在Windows平台下有GUI界面)执行python脚本文件在Linux/UNIX环境下运行程序。在python头部加一行:#!/usr/local/bin/pythonchmod+xmyfile.py./myfile.py(当然也可以直接以pythonmyfile方式执行)快速开始简单语句print“helloworld”计算器1+1格式化字符串printThetotalis%0.2f%56.3598注释和模块注释#我是注释“”“我的注释”“”模块importsyssys.exit()Python的数据类型变量的定义。在python中,变量的类型是由赋给它的数值定义的。q=7#q其为数值型变量q=“Seven”#q为字符串型变量基本数据类型:字符串,整数,浮点数,虚数,布尔型。集合类型:列表(List),元组(Tuple),字典(Dictionary或Hash)Python的数据类型列表(List)List的定义。aList=[23]或者bList=[1,2,3]List的使用。可以像c语言中数据一样引用list中的元素。printbList[1]List常用操作:append,del,+,*,len(list)[0]*5Python的数据类型:列表(方法)列表对象支持的方法(演示)append(x)count(x):X在List中的个数extend(L)Index(x)insert(i,x)pop(x)remove(x)reverse()sort()Python的数据类型:元组(Tuple)Tuple的定义aTuple=(1,3,5)printaTuple元组可以用方括号括起下标做索引元组一旦创建就不能改变列表大部分操作同样适用于元组Python的数据类型:字典(Hash)字典是一个用大括号括起来的键值对,字典元素分为两部份,键(key)和值。字典是python中唯一内置映射数据类型。通过指定的键从字典访问值。字典的使用:a={‘a’:’aa’,‘b’:’bb’}a[‘c’]=‘cc’a.has_key(‘a’)Python的数据类型:字典(常用方法)字典的常用方法(演示):has_key(x)keys()values()items()clear()copy()update(x)get(x[,y])Python控制语句ifPython支持三种不同的控制结构:if,for和while,不支持C语言中的switch语句。(1)if语句的用法:ifEXPRESSION1:STATEMENT1elifEXPRESSION2:STATEMENT2else:STATEMENT3Python控制语句forfor语句的用法:mylist=forstatementforwordinmylist:printwordelse:#最终执行printEndlistPython控制语句whilewhile语句的用法:a=0whilea5:a=a+1printaelse:printa'svalueisfivePython循环中的控制语句break:终止当前循环continue:终止本次循环pass:什么事都不错Python函数函数定义:deffunction_name(arg1,arg2[,...]):statement[returnvalue]函数名:函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号;函数名是区分大小写的。函数名不能是保留字。Python函数作用域Python使用名称空间的概念存储对象,这个名称空间就是对象作用的区域,不同对象存在于不同的作用域。不同对象的作用域规则:每个模块都有自已的全局作用域。函数定义的对象属局部作用域,只在函数内有效,不会影响全局作用域中的对象。赋值对象属局部作用域,除非使用global关键字进行声明。LGB规则大多数名字引用在三个作用域中查找:先局部(Local),次之全局(Global),再次之内置(Build-in)。若仍然找不到这个变量名,则引发NameError异常.Python函数参数函数的参数分类:默认参数:deffunction(ARG=VALUE)元组参数:deffunction(*ARG)字典参数:deffunction(**ARG)一些规则:默认值必须在非默认参数之后;在单个函数定义中,只能使用一个tuple参数(*ARG)和一个字典参数(**ARG)。tuple参数必须在连接参数和默认参数之后。字典参数必须在最后定义。内置特殊函数apply()函数apply(func[,args[,kwargs]])函数用于当函数参数已经存在于一个元组或字典中,间接地调用函数.args是一个包含将要提供给函数的按位置传递的参数的元组.如果省略了args,任何参数都不会被传递.kwargs是一个包含关键字参数的字典.foo(3,“x”,name=‘Dave’,id=12345)apply(foo,(3,“x”),{‘name’:‘Dave’,‘id’:12345})lambda操作符lambdaargs:expressionargs是一个用逗号分隔的参数,expressin是一个调用这些参数的表达式map(),zip(),reduce(),和filter()t=map(func,s).即t[i]=func(s[i]).需要注意的是,func函数必须有且只有一个参数a=[1,2,3,4,5,6]b=map(lambdax:3*x,a)#b=[3,6,9,12,15,18]t2=map(func,s1,s2,…,sn)?t3=map(None,s1,s2,…,sn)?zipls=zip(s1,s2,...,sn):zipls[i]=(s1[i],s2[i],...,sn[i]).zip()函数取决于最短序列.reduce(func,s)函数从一个序列收集信息,然后只返回一个值(例如求和,最大值,等).b=reduce(sum,[1,2,3,4,])#b=(((1+2)+3)+4)=10filter(func,s)是个序列过虑器,使用func()函数来过滤s中的元素。c=filter(lambdax:x4,[1,2,3,4,])#c=[1,2,3]列表内涵列表内涵可以代替许多调用map()和filter()函数的操作.一般形式是:[表达式foritem1in序列1foritem2in序列2...foritemNin序列Nif条件表达式]s=[]foritem1insequence1:foritem2insequence2:...foritemNinsequenceN:ifcondition:s.append(expression)Demoimportmatha=[-3,5,2,-10,7,8]b='abc‘c=[2*sforsina]#c=[-6,10,4,-20,14,16]d=[sforsinaifs=0]#d=[5,2,7,8]e=[(x,y)forxina#e=[(5,'a'),(5,'b'),(5,'c'),foryinb#(2,'a'),(2,'b'),(2,'c'),ifx0]#(7,'a'),(7,'b'),(7,'c'),#(8,'a'),(8,'b'),(8,'c')]f=[(1,2),(3,4),(5,6)]g=[math.sqrt(x*x+y*y)#g=[2.23606,5.0,7.81024]forx,yinf]h=reduce(lambdax,y:x+y,#平方根的和[math.sqrt(x*x+y*y)forx,yinf])eval(),exec,execfile(),和compile()eval(str[,globals[,locals]])函数将字符串str当成有效Python表达式来求值,并返回计算结果。同样地,exec语句将字符串str当成有效Python代码来执行.提供给exec的代码的名称空间和exec语句的名称空间相同.最后,execfile(filename[,globals[,locals]])函数可以用来执行一个文件,看下面的例子:eval('3+4')7exec'a=100‘a100execfile(r'c:\test.py')hello,world!eval(),exec,execfile()名字空间默认eval(),exec,execfile()所运行的代码都位于当前的名字空间中。eval(),exec,和execfile()函数也可接受一个或两个可选字典参数作为代码执行的全局名字空间和局部名字空间Demo:globals={'x':7,'y':10,'birds':['Parrot','Swallow','Albatross']}locals={}#将上边的字典作为全局和局部名称空间a=eval(3*x+4*y,globals,locals)execforbinbirds:printbinglobals,locals注意语法execfile(foo.py,globals,locals)exec是一个语句(就象print或while),而eval()和execfile()则是内建函数.compile(str,filename,kind)函数compile()将一个字符串编译为字节代码,str是将要被编译的字符串,filename是定义该字符串变量的文件,kind参数指定了代码被编译的类型'single'指单个语句,'exec'指多个语句,'eval'指一个表达式.返回一个代码对象,该对象也可以被传递给eval()函数和exec语句来执行预编译,可以有效提高程序的执行效率递归Python对递归函数调用的次数作了限制.函数sys.getrecursionlimit()返回当前允许的最大递归次数,而函数sys.setrecursionlimit()可以改变该函数的返回值.默认的最大递归次数为1000.当一个函数递归次数超过最大递归次数时,就会引发RuntimeError异常.Python模块模块:可把一个复杂的程序按功能分开,分别存放到不同文件中,使程序更容易维护和管理。Python中的模块是以.py结尾的Python代码文件。通过import命令输入,如:importsys(和c中include语句似乎相似)该import语句共执行三步操作:创建新的名称空间(namespace),该名称空间中拥有输入模块中定义的所有对象;执行模块中的代码;创建该名称空间的变量名。Python模块import的使用:importftplibasftpfromftplibimportFTPPython脚本与模块python脚本和模块都是一个以.py结束的文件,那程序是如何判断一个.py文件是作为脚本还是模块呢?关键是一个名为__name__的变量,如果它的值是__main__,则是作为脚本直接运行,否则是做为模块运行的。if__name__==“__main__”:main()Python包(package)我们可以把几个功能相近的模块组成一个Python包,存放到一个目录结构中,通过输入包的路径来调用对对象。例子:/WebDesign__init__.pydesign.pydraw.py其中__init__.py是包的初始化文件,可以为空,但是必不可少的。