色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java和python的區(qū)別在哪里?

Java與Python的一些區(qū)別

1.py是1991年問世,java是1995年問世;

2.helloworld代碼區(qū)別:

java:

publicclassHello

{

publicstaticvoidmain(String[]args)

{

System.out.println("HelloWorld!");

}

}

py:

print("HelloWorld!")

3.打開文件代碼:

py:

f=open("c:\\tmp\\Hello.java","r")

print(f.read())

f.close()

java有IO模塊設(shè)計(jì),可是人們不太常用;

4.函數(shù)缺省值:

py:

classEmployee():

def__init__(self,name,gender="male",maritalStatus="single"):

self.name=name

self.gender=gender

self.maritalStatus=maritalStatus

self和java里的this差不多,而self必須作為參數(shù),py代碼縮進(jìn)用的空格,容易出錯(cuò);

5.變量類型:

py:是動(dòng)態(tài)語言,變量類型統(tǒng)一用var表示

var=3

var="helloworld"

java:是靜態(tài)語言,變量類型有區(qū)別;

6.實(shí)現(xiàn)DuckTyping代碼:

py:

classDuck:

defhelp(self):

print("Quaaaaaack!")

classPerson:

defhelp(self):

print("helpme!")

defin_the_forest(x):

x.help()

in_the_forest(Duck())

in_the_forest(Person())

優(yōu)點(diǎn):這個(gè)Duck和Person并沒有實(shí)現(xiàn)共同的接口或者繼承相同的類,但是照樣可以作為參數(shù)傳遞給in_the_forest函數(shù),這個(gè)特性寫起代碼來非常爽快。

缺點(diǎn):1)寫起來很爽,讀起來就不爽了,別人看到了in_the_forest這個(gè)函數(shù),他知道參數(shù)x的類型是什么嗎?是Person?是Bird?還是別的類?

2)如果重構(gòu)一下Person函數(shù)的help方法,比如改成sos(self),py的IDE能安全地重構(gòu)嗎?恐怕是不容易吧?假設(shè)人肉重構(gòu)改錯(cuò)了,py也只能在運(yùn)行時(shí)發(fā)現(xiàn)錯(cuò)誤了!

java:

由于自己是靜態(tài)類型,變量類型在編譯期就能確定,IDE那強(qiáng)大的智能感知功能,自動(dòng)安全重構(gòu)的功能一直是引以為傲的賣點(diǎn)。

7.AOP:是對(duì)現(xiàn)有代碼做增強(qiáng),動(dòng)態(tài)的添加一些安全、日志、事物等‘切面’功能。

java:

java類一旦被裝載就無法修改,那是怎么實(shí)現(xiàn)動(dòng)態(tài)添加的呢?

答:我們可以在運(yùn)行時(shí)生成新的類啊,讓新生成的類繼承老的類,或者和老的類實(shí)現(xiàn)同樣的接口,比如ASM這樣的工具,可以操作字節(jié)碼去創(chuàng)建新的類,織入那些‘切面’代碼,這種工作如此精巧,讓人嘆為觀止。

py:

我們是動(dòng)態(tài)語言,可以在運(yùn)行時(shí)對(duì)一個(gè)類進(jìn)行增強(qiáng):添加方法,替換方法,根本不用操作那么Low的字節(jié)碼,我給你舉個(gè)簡(jiǎn)單的例子:

classOrder:

defsave(self):

print("saveorder")

#把老的方法引用保存起來

old_save=Order.save

#定義一個(gè)新方法,該新方法調(diào)用老方法

#并在方法前后加上了日志

defsave_with_logging(self):

print("loggingstart")

old_save(self)

print("loggingend")

#把新方法賦值給Order類的save方法

Order.save=save_with_logging

#測(cè)試

t=Order()

t.save()

輸出:

loggingstart

saveorder

loggingend

Python想實(shí)現(xiàn)AOP,還可以使用裝飾器,Metaclass等很多方式,總得來說py的函數(shù)就是一個(gè)對(duì)象;

————————————————

版權(quán)聲明:本文為CSDN博主「mhyunyun」的原創(chuàng)文章,遵循CC4.0BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/a214704/java/article/details/81275952