Python vi Java

Summary:

      本文不会详细讲解python基础知识,主要重点描述一些我个人认为较重要并且容易弄混的概念,特别是和java的比较。

Conditions:

1、熟悉python基础语法。

2、熟悉java基础语法。

3、熟悉python数据结构和语句。


Point 1: 数据类型定义

强类型:java

1)java定义变量需要指定数据类型,比如 

String username ="zhangsan";

System.err.println(username);

弱类型:python、JavaScript、scala

1)python不需要指定数据类型,程序解释的时候会自动判断

>>> username = "zhangsan"

>>> print(username)

zhangsan

2)JavaScript在所有变量前加var关键字,如 var username=“张三”。

Point 2: 代码段区分

1)java代码段通过大括号{}来区分,单行代码用";"区分。


2)python通过缩进区分,缩进空格数量没有具体规定,但建议是一个tab。单行代码不需要用";"区分。

def myFun():

username ="zhangsan"

    print("my name is %s"%username)

myFun()

Point 3: for循环

java有两种循环方式:

1)类似C语言那种

public class article {

public static void main(String[] args){

for(int i=0;i<10;i++){

System.err.println(i);

        }

}

}

2)java5.0开始的增强for循环

public class article {

public static void main(String[] args){

List list =new ArrayList();

        list.add("zhang");

        list.add("li");

        list.add("huang");

        for(String li : list){

System.err.println(li);

        }

}

}

python循环方式

fruits = ["apple","banana","pear",""]

for fruit in fruits:

    print(fruit)

注:python对循环数字的处理方式,如

for i in range(1,10,2):

    print(i)

Point 4: 异常处理

1)java是try...catch...finally

public class article {

public static void main(String[] args){

try{

System.out.println("try.....");

            int a =1/0;

        }catch (ArithmeticException a){

a.printStackTrace();

            System.out.println("ArithmeticException.....");

        }catch (Exception e){

e.printStackTrace();

            System.out.println("Exception.....");

        }finally {

System.out.println("finally.....");

        }

System.out.println("如果异常被正确捕获,执行我");

    }

}

2)python是try...exception...else...finally

try:

    print("try......")

    1/0

except ZeroDivisionError:

    print("ZeroDivisionError")

except Exception:

    print("Exception")

else:

    print("如果没有异常发生,就执行我else......")

finally:

    print("无论如何,都要执行finally......")

print("如果异常被正确捕获,执行我")

Point 5: 多态

1)java

    多态是同一个行为具有多个不同表现形式或形态的能力,多态就是同一个接口,使用不同的实例而执行不同操作。多态存在的三个条件:

1.1、继承

1.2、重写

1.3、父类引用指向子类对象

比如:Parent p = new Child();

    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

2)python

    python是没有接口概念的,所以多态也有别于java。

class Animal(object):

    def __init__(self):

        print("this is Animal __init__")

    def show(self):

        print("show method animal.....")

class Cat(Animal):

    def __init__(self):

        print("this is Cat __init__")

    def show(self):

        print("show method cat......")

    def cal(self):

        print("private method cal......")

cat = Cat()

cat.show()

cat.cal()

运行结果:

this is Cat __init__

show method cat......

private method cal......

注:本例中虽然父类和子类都有show方法,但我本人认为这不是重写override,而只是属于不同作用域的同名方法。

Point 6: 文件处理

python对文件的处理比java简单许多,如下图是java操作IO的一些API,就不代码演示了


举个python读写文件的例子

with open("/Users/xieyuanzheng/Downloads/逍遥游", "w") as fo: 

     print("文件名: ", fo.name) 

     print("是否已关闭 : ", fo.closed) 

     print("访问模式 : ", fo.mode)

执行结果:

文件名: /Users/xieyuanzheng/Downloads/逍遥游

是否已关闭 :  False

访问模式 :  w

Point 7:键盘输入值

1)java

public class article {

public static void main(String[] args){

Scanner scan =new Scanner(System.in);

        System.out.println("请输入:");

        if(scan.hasNext()){

String input = scan.next();

            System.out.println(input);

        }

scan.close();

    }

}

输出:

请输入:

hi,新年好!

hi,新年好!

2)python,有两种方法

2.1 raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符)

str = raw_input("请输入:")

print "你输入的内容是: ", str

注意两点:一是此方法只有python2才有,python3已取消;二是返回值是string类型,如果输入是数字,需要做类型转换。

2.2 input([prompt]) 函数和 raw_input([prompt]) 函数基本类似,但是 input 可以接收一个Python表达式作为输入,并将运算结果返回。

str =input("请输入:")

print(eval(str))

执行结果:

请输入:[x+2 for x in range(1,10,2)]

[3, 5, 7, 9, 11]

Point 8: 方法和函数的区别

    如下python代码图所示,从功能上来讲,函数和方法是没有区别的。函数可以脱离类而存在,但方法不行,而java中方法是必须依附于类而存在,所以java只有方法而没有函数,python方法和函数皆有。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容