您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > Python > python基础教程
重要说明这不是给编程新手准备的教程,如果您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,Shell等.总之,这是面向老鸟的,让老鸟快速上手Python教程.为什么总结这样的一个教程我虽不是老鸟,但已熟悉Java,C/C++,Shell和Perl,且对常见的数据结构和算法等都了解.最近因项目需要,要做一个小工具,评估后感觉用Python实现最为方便,于是就有了对Python的学习.这时就需要一门快速上手Python的教程:因为编程语言的基本知识,以及如何实现程序对我来说不是难事,关键的就是如何具体使用Python语句来体现程序的逻辑!Python的书籍对我来说内容太多了,没有时间去看,查找也不是很容易!网上的资料又太零散,这就需要一个快速入门Python的教程.这里重点是以对比的方式来说明Python与其语言的不同之处,和一些Python特有的特性,以能以最快速度能用Python写程序.Python是一门动态语言与Java,C等相对,Python不用编译,像脚本一样直接运行.这就导致了,所有错误都是运行时的!即使有语法错误,或者异常,如果程序逻辑没有执行到,就不会有错误.比如一个if分支中有语法错误,使用了未定义的函数,但如果未执行到此分支,就可以正常运行.动态的另外一层意思就是它的类型是动态的,也就是说无需指定变量的类型,在运行时,根据它的内容来决定的类型.如何运行Python通常来讲有二种方式,一种方式是交互式的,就像Shell命令行提示符那样,交互式的,输入,就有输出;在终端输入python命令,就进入了Python的命令提示符中:输入Python语句,解释器就会执行,并输出结果,如:[python]viewplaincopyprint?1.[alex@alexon:~]$python2.Python2.7.3(default,Apr102013,06:20:15)3.[GCC4.6.3]onlinux24.Typehelp,copyright,creditsorlicenseformoreinformation.5.print'hello,world'6.hello,world7.输入exit()可以退出命令提示符.另外一种方式就是脚本,就像Shell的脚本的一样,把一组命令集合到一起执行,这就能发挥更大的作用.[python]viewplaincopyprint?1.#!/usr/bin/python2.print'hello,world'Python以缩进来区分语句块不像Java,C/C++以花括号{}来区分语句块.Python是以缩进来表示语句块,同一缩进级别为同一级别的语句块.一个脚本文件中的0级缩进是文件加载的时候就会被执行的语句,如上面的print.开启一个新的缩进需要使用:(冒号),代表下一级别的语句块,如条件,循环或者函数定义.缩进最好使用四个空格.而且要注意缩进要一致,使用空格就全都用空格,使用Tab就都使用Tab,混用就可能得到缩进错误:IndentationError:unindentdoesnotmatchanyouterindentationlevel操作符与Java和C中十分类似,+(加),-(减),*(乘),/(除),%(求余),**(指数运算),=(赋值).以及减便运算,如+=,-=,*=和/=等.赋值运算与其他语言一致.逻辑操作==!===与其他语言一样.不一样的有not逻辑非,and逻辑与和or逻辑或.注释与文档一行当中,从#开始地方就是注释.不会影响下一行.引号放在文件的开头,函数的开头或者一个类的开头,就是文档注释,与Java中的/**...*/作用和目的是一样的.折行如果一行太长了,写不下了,就需要在下一行接着写,这时可以使用\来告诉Python,下一行继续.一行写多个语句Python是一个语句放在一行,行尾可以选择性的加上;但如果想在一行放多个语句,就需要用;来分隔语句:a=1;b=2;c=3;虽然这在语法上可行,但不是一个好习惯,绝大多数的编程规范都是要一行写一个语句.基本数据类型intlongboolfloat与Java中非常接近.可以近似认为一致.bool的值是True和False,或者0(False),非0就是True.List和Tuple这就是Java或C中的数组.它是一个容器,能用来顺序的,以整数索引方式检索,存储一组对象.List用[]来表示,如[1,2,3]就是一个List;而Tuple用()来表示,如(3,4,5)就是一个Tuple.它们的区别在于List是可变的;而Tuple是不可变的.也就是说不可以增,删和改.索引方式除了与Java一样的以一个整数下标方式外,还可以指定开始,结束和步长,和使用负索引来分割List:通用语法格式是:list[start:end:step]list[index]---返回第(index+1)个元素,受C语言影响,下标亦是从0开始list[start:end]---返回从start开始,到end-1,也就是list[start],list[start+1].....list[end-1]list[start:end:step]---与上面类似,只不过每隔step取一个list[:end]----缺省的开端是0list[start:]----缺省的结尾是len(list),或者-1负数索引更是方便,它与正数的对应关系为:正数索引0123数组元素[1][3][5][7]负数索引-4-3-2-1实例:[python]viewplaincopyprint?1.a=[1,3,5,7];2.a[0]3.14.a[3]5.76.a[-1]7.78.a[-2]9.510.a[0:3]11.[1,3,5]12.a[1:3:2]13.[3]14.a[0:3:2]15.[1,5]16.a[0:-1:2]17.[1,5]18.List是一个对象,它有一此内置的方法,如:包含关系:in,notin[python]viewplaincopyprint?1.3ina2.True3.8ina4.False5.8notina6.True7.连接符:+[python]viewplaincopyprint?1.a+[9,11]2.[1,3,5,7,9,11]重复:*[python]viewplaincopyprint?1.a*22.[1,3,5,7,1,3,5,7]3.字符串String字符串就是一个字符的数组,List的操作都可以对String直接使用.[python]viewplaincopyprint?1.str='hello,world'2.str[0:3]3.'hel'4.str[0:3:2]5.'hl'6.str[-1]7.'d'8.str*29.'hello,worldhello,world'10.'3'instr11.False12.'le'instr13.False14.'el'instr15.True16.'ell'notinstr17.False18.字串格式化符%这是一个类似C语言printf和Java中的String.format()的操作符,它能格式化字串,整数,浮点等类型:语句是:formats%(var1,var2,....)它返回的是一个String.[python]viewplaincopyprint?1.Int%d,Float%d,String'%s'%(5,2.3,'hello')2.Int5,Float2,String'hello'3.Dictionary字典相当于Java中的HashMap,用于以Key/Value方式存储的容器.创建方式为{key1:value1,key2:value2,....},更改方式为dict[key]=new_value;索引方式为dict[key].dict.keys()方法以List形式返回容器中所有的Key;dict.values()以List方式返回容器中的所有的Value:[python]viewplaincopyprint?1.box={'fruits':['apple','orange'],'money':1993,'name':'obama'}2.box['fruits']3.['apple','orange']4.box['money']5.19936.box['money']=293937.box['money']8.293939.box['nation']='USA'10.box11.{'money':29393,'nation':'USA','name':'obama','fruits':['apple','orange']}12.box.keys()13.['money','nation','name','fruits']14.box.values()15.[29393,'USA','obama',['apple','orange']]16.分支语句格式为:[python]viewplaincopyprint?1.ifexpression:2.blocks;3.elifexpression2:4.blocks;5.else:6.blocks;其中逻辑表达式可以加上括号(),也可以不加.但如果表达式里面比较混乱,还是要加上括号,以提高清晰.但整体的逻辑表达式是可以不加的:[python]viewplaincopyprint?1.a=3;b=4;c=5;2.ifa==banda!=c:3....printAreyousure4....elif(a==candb==c):5....printAllequal6....else:7....printIamnotsure8....9.Iamnotsure10.while循环与Java中类似:whileexpression:blocks[python]viewplaincopyprint?1.i=0;2.whilei3:3....printIamrepeating;4....i+=1;5....6.Iamrepeating7.Iamrepeating8.Iamrepeating9.for语句与Java中的foreach语法一样,遍历List:forvarinlist:blocks;[python]viewplaincopyprint?1.msg=Hello;2.forcinmsg:3....printc;4....5.H6.e7.l8.l9.o10.数组推导这是Python最强大,也是最性感的功能:list=[expressionforvarinlistcondition]它相当于这样的逻辑:list=[];forvarinlist:ifcondition:executeexpression;addresultofexpressiontolistreturnlist;一句话,相当于这么多逻辑,可见数组推导是一个十分强大的功能:[python]viewplaincopyprint?1.a=range(4);2.a3.[0,1,2,3]4.[x*xforxinaifx%2==0]5.[0,4]6.遍历列表a,对其是偶数的项,乘方.函数如何定义函数deffunction_name(args):function_body;调用函数的方式function_name(formal_args):[python]viewplaincopyprint?1.defpower(x):2....returnx*x;3....
本文标题:python基础教程
链接地址:https://www.777doc.com/doc-7027763 .html