目录1.简介2.语言特点3.版本介绍4.代码书写格式5.注释6.标识符7.变量定义和赋值8.数据类型9.字符串10.输入和输出11.数学运算12.控制流13.函数(方法)14.全局和局部变量15.列表16.元组和字典(PythonOnly)17.模块和包18.异常和文件处理19.面向对象编程20.接口和多重继承21.多线程编程22.图形用户界面编程2013年10月编程语言排行榜Java的特点编译型语言:编译器会生成由字节码组成的.class文件,然后由Java虚拟机来运行静态类型语言:在编译期间就确定数据类型,即要求在使用任意变量前声明数据类型强类型语言:一旦一个变量被指定了某个数据类型,如果不经过强制转换,则它就永远是这个数据类型了面向对象语言:必须面向对象编程,Java中的所有东西都会属于某个类Python的特点解释型语言:解释型语言程序不需要编译,运行时才翻译成机器语言,但Python程序在运行过程中会自动生成字节码文件.pyc或.pyo,改善了Python的性能动态类型语言:使用任意变量前无需声明数据类型,确定一个变量的类型是在第一次给它赋值的时候强类型语言:同Java面向对象语言:不强求以面向对象的方式编程,可以以独立的函数模块来处理逻辑而不需要放到类中Python的特点HighLevelObjectOrientedScalableExtensiblePortableEasytoLearnEasytoReadEasytoMaintainRobustEffectiveasaRapidPrototypingToolAMemoryManagerInterpretedand(Byte-)Compiled版本介绍Java的版本顺序是Java1.02、Java1.1、Java2(1.2、1.3、1.4)、Java5.0(1.5)、Java6.0(1.6),现在已有Java7.0。这里IDE使用EclipsePython的版本分为2.x和3.x两大系列,而2008年底推出Python3.0不向下兼容2.x版本。这里使用的是ActiveState公司提供的免费Python开发集成支持包ActivePython2.7,2.x的最后一个版本,IDE使用Eclipse+Pydev代码书写格式Java:使用分号来分割语句,花括号来分割代码块(类似C)字符串只能用双引号(“”)括起来当一个字符串在一行表示不下,在行尾加一个加号(+),表示字符串在下一行继续Python:使用硬回车来分割语句,冒号和四个空格(Tab)缩进来分割代码块字符串用单引号、双引号或三重引号都可以括起来当表达式在一行表示不下,在行尾加一个反斜杠(\),表示继续上一行分号将两个语句连接在一行中注释Java:/*多行注释*/inta=1;//单行注释/***文档注释*/Python:#注释1a=1#注释2'''注释3'''标识符Java:标识符以字母、下划线(_)或美元符($)开头标识符区分大小写,长度没有限制类和接口名的每个字的首字母大写(MyClass);变量名和方法名的首字的首字母小写其余首字母大写(myName),都限制使用下划线,变量名限制使用$;常量名全部使用大写字母(SIZE_NAME),Python中没有常量Python:标识符以字母或下划线(_)或开头标识符区分大小写以单下划线开头的表示不能直接访问的类属性(_foo),在模块或类外不可以使用,不能用fromxxximport*而导入,但可通过类提供的接口进行访问;以双下划线开头的表示类的私有属性或方法(__foo),只有类对象自己能访问,连子类对象也不能访问;以双下划线开头和结尾的表示内置属性或专用方法(__foo__),普通变量应当避免这种命名风格变量定义和赋值Java的变量分为primitive主数据类型和引用变量inta=1;//在栈内存(stack)中创建一个变量为a的引用,然后查找栈中是否有1这个值,如果没找到就将1存放进来,然后将a指向1。栈的存取速度比堆内存(heap)要快,仅次于寄存器,栈数据可以共享charb=“s”;booleanc=true;//boolean类型与整数类型不相容Stringstr=“shopping”;//String不是原始的数据类型,而是一个类(class),str是引用变量int[]nums=newint[7];//nums是引用变量,创建大小为7的数组,并将它赋值给声明为int[]的变量numsPython的变量在使用前无需声明数据类型,变量在第一次被赋值时自动声明。赋值时不管这个对象是新建的还是已经存在的,都是将该对象的引用(并不是值)赋值给变量a=1#将变量a绑定到了值(或对象)1上面b=“shopping”或b=“shop”+“ping”c=Truex=y=z=1#多重赋值x,y,z=1,2,“Hello”#多元赋值a=b=[1,2,3]#a和b都指向同一个对象a.append(4)printb[1,2,3,4]数据类型Java的primitive主数据类型分为:字符型char(16bit)布尔型boolean(true或false)数值型byte(8bit)、short(16bit)、int(32bit)、long(64bit)、float(32bit)、double(64bit)Python的数字类型分为:整型长整型布尔型(True或False)双精度浮点数复数下列对象的布尔值是False:NoneFalse所有值为0的数“”空字符串[]空列表()空元组{}空字典字符串Java:使用String这个类来表示多个字符,只能用双引号(“”)括起来Stringstr=abc;//先在栈中创建一个对String类的对象引用变量str,然后查找栈中有没有存放abc,如果没有,则将abc存放进栈,并令str指向abc,如果已经有abc则直接令str指向abcStringstr=newString(abc);//用new()来新建对象,它会在存放于堆中,每调用一次就会创建一个新的对象Python:没有字符这个类型,字符串为引号之间的字符集合str=“abc”或str=“a”+“bc”str*2=“abcabc”str[0]=“a”#第一个字符的索引是0str[-1]=“c”#最后一个字符的索引是-1str[:2]=“ab”str[1:]=“bc”“bc”instr=True输入Java:importjava.util.Scanner;publicclasstest{publicstaticvoidmain(String[]args){System.out.println(Enterloginname:);Scannersca=newScanner(System.in);Strings=sca.next();System.out.println(Yourloginis:+s);}}Python:user=raw_input(‘Enterloginname:’)print“Yourloginis:”,user输出Java:system.out.println=(“helloworld”);Stringstr=“helloworld”;system.out.println=(str);intnum=1;system.out.println=(“Pythonisnumber”+num);Python:print“helloworld”str=“helloworld”;printstrnum=1print“%sisnumber%d”%(“Python”,num)print“Pythonisnumber”+str(num)数学运算Java:/表示除法,5/3得1,-2/4得0&&,||,!表示逻辑与,逻辑或,逻辑非++表示自增,--表示自减a+=b等价于a=a+b,同Pythonintx=(int)22.5+(int)34.7;强制转型,可能引起精度丢失Python:**表示幂符号,如x**y表示x的y次//表示地板除,即比商小的最大整数,如-2//4和-2/4都得-1,-2.0//4得-1.0,-2.0/4得-0.5,round(-0.5)得-1.0,int(-0.5)得0~按位翻转,~x就是-(x+1)and,or,not表示逻辑与,逻辑或,逻辑非没有自增(++)和自减(--)运算符,可以写成x+=1控制流—if,elseJava:booleanlove=false;if(love==true){System.out.println(Iloveyou);}elseif(love==false){System.out.println(Idon'tloveyou);}else{System.out.println(Idon'tknowyou);}Python:love=Falseiflove==True:printIloveyoueliflove==False:printIdon'tloveyouelse:printIdon'tknowyou控制流程—switch(JavaOnly)intresult=2;switch(result){case1:System.out.println(True);break;case2:System.out.println(False);break;default:System.out.println(Unknown);break;}控制流—whileJava:intnumber=23;intguess=47;booleanrunning=true;while(running==true){if(guess==number){System.out.println(Congratulations,youguessedit.);break;}if(guessnumber){System.out.println(Sorry,numberistoosmall.);guess++;continue;}System.out.println(Sorry,numberistoobig.);guess--;}Python:number=23guess=0running=Truewhilerunning:ifguess==number:print'Congratulations,youguessedit.'breakifguessnumber:print'Sorry,numberistoosmall.'guess+=1continueprint'Sorry,numberistoobig.'guess-=1控制流—forJava:for(inti=0;i5;i++){System.out.println(i);}或int[]integers={0,1,2,3,4};//建立一个数组for(inti:integers){//for(循环变量类型循环变量名称:要被遍历的对象){循环体}System.out.println(i);}Python:foriinrange(5):#range起始缺省是0,步长缺省是1,这里给出序列[0,1,2,3,4]printi方法(类里的函数)Java:方法必须声明返回类型publicclasstest{publicstaticvoidmain(String[]args){testa=newtest();a.MyPet(5,cat);}//不能给Java的方法参数赋默认值publicvoidMyPet(intx,Stringy){System.out.println(Ihave+x++y+s);System.out.format(Ihave%d%ss,x,y);}}方法(类里的函数)Python:defMyPet(pet,number=1):#number缺省值为1'''printthenu