轉載請註明出處:
(http://blog.csdn.net/BruceHurrican/article/details/53541663)
在學習 python 之前我對 python 是個小白。在工作中用到好多第三方的工具(如 freeline),這些工具中就有好多 .py 的文件, 爲了弄懂這些文件裏的邏輯纔來學習python 的,當前 freeline 採用的是 python2版本的,所以我是以 python2來學習的。PS: 我是做安卓的,對 Java 什麼知道的多些,python 就……T_T
環境搭建
首先交待下我的學習工具,mac, pyCharm, sublime。
剛開始不推薦用 pyCharm 直接寫 python 代碼,因爲好多東西 IDE 都幫我們做了,有些基礎原理方面的東西就學不到了。
因爲我用的是 mac ,已經幫我安裝了 python,如果沒有安裝 python 的話,需要自行去安裝,傳送門 。
在終端輸入
python –version
我的電腦出現的是 Python 2.7.10,表示我的電腦已經可以使用 python 了。
知識點整理
如前所述,我對 java 知道的多點,所以在學習 python 時總是習慣性的拿 python 和 java 來對比,不曉得哪個大牛說過,≖‿≖✧程序語言具有類比性,學好了一門,再去學另一門會容易些。不敢說我對 java 理解的有多透徹,以我 leader 的評價來說,算是熟悉吧,畢竟開發 android app 夠用了。扯遠了,哈……
先整體瞭解下 java 和 python 的異同吧
1. 從編譯類型上來說 python 是解釋型語言,java 是編譯型語言也是解釋型語言。python 是不需要編譯的,可以直接運行的。java運行速度快,python慢,代碼量上python少,java快。java是靜態語言,聲明變量必須指明變量類型,python是動態語言,必須指明變量類型。
2. 兩者都對數據類型敏感,不同的數據類型之間的轉換是需要類型轉換的。
3. 書寫單行語句時,java 必須以分號”;”結尾,python是可加可不加分號的,如下:
python
print 'aa' # 1
print 'bb'; #2
注意,如果 #1,#2在同一行的話,則#1後面必須加分號,如下:
python
print 'aa'; print 'bb'
-4. java 中雙引號表示字符串,單引號表示字符,python 中 兩種符號都表示字符串,python 中沒有字符這種數據類型,另外 python 中還可以用 三個單引號 ”’來表示字符串
a=”’hello python”’
三個單引號還可以用來顯示多行字符串
b = ”’hello python
hello java”’
-5. python 中對換行非常敏感,多條語句執行時,就是依據換行和縮進來決定招行範圍的,如:
python
if 1<0:
print 'hello python' #1
print 'hello python2' #2
print 'hello java' #3
if 判斷語句只能影響到 #1,#2,影響不到#3。這是因爲 python 中不像 java 可能通過 花括號”{}”來表示代碼塊,方法體,python 對應的稱爲代碼組,函數,代碼組,函數是以冒號開始的相同縮進表示屬於相同的代碼組或函數,所以在 python 中不能隨便縮進,不像 java,在一行語句前多敲幾下空格是不影響最終結果的
6. python 中用中括號”[]”表示列表
c=[1,2,3,4]
相當於 java 中的集合,可以增刪改查,
7. python 中 的圓括號代表可讀列表,只能讀取不能修改相當於 java 中的常量數組。
8. python 中的 字典和 java 中的 map 有點類似都是KV 結構
python
dd = {'a':1,'b':2,'c':3}
-9. python 中使用其他包下的函數需要引包使用 import 關鍵字,這點和 java 一樣
10. 重複執行命令,在 java 中如果要打印兩遍同樣的信息,要麼循環,要麼寫兩遍同樣的語句,python 中只需要在調用的地方加上”*2”即可
python
print 'aa'*2
-11. python是面向對象的,這點和 java 相同,但是寫法上又有點不同,因爲在 Java 語法中,在類名後是用花括號包括的部分稱爲類體,在 python 中無此用法。python 中是依靠冒號的縮進組成的代碼組來表示類體的,如:
python
class KK:
def __init__(self,name):
self.name = name
def showName(self):
print 'name: ', name
ks=KK('bruce')
ks.showName()
”’_ _ init _ _(self,name)”’是類的構造函數, name 是入參,self 是本身,類的實例化沒有 new 關鍵字,調用實例方法和 Java 類似,
12. 垃圾回收機制,和 java 類似,當對象不再被引用時,會調用類 del方法回收內存
13. java 和 python 都支持繼承,區別是 python 支持多繼承,java 繼承的關鍵字 extends 而 python 是用圓括號來表示,多個父類用逗號分隔,如
python
class KK:
'測試類'
def __init__(self, name):
self.name = name
def showName(self,msg):
print 'name: ', self.name + msg
def __del__(self):
class_name = self.__class__.__name__
print class_name + '銷燬'
class SS:
'SS'
def __init__(self):
print '調用子類構造方法2'
def showTxt(self,msg):
print msg
class TT(KK,SS):
'TT'
def __init__(self):
print '調用子類構造方法'
-14. python 子類重寫父類方法直接聲明一個同名同參的方法即可,沒有 java 的 override 關鍵字。
15. 類變量的權限,對於成員變量,類實例可以訪問,這點類似 Java 類中的 public 修飾的成員變量。對於私有變量 python 中在類中聲明時須加兩個下劃線
class TT:
__ss = 30
按照 Java 的思維習慣,私有變量是不能被外部實例訪問,如上
tt=TT()
tt.__ss
會報錯 AttributeError: TT instance has no attribute ‘_ss’,這樣理解也沒有什麼問題,但是 python 和 Java 在訪問私有變量是有個很大的不同,上述方法行不通,但是可以通過 tt._TT__ss 的形式來訪問私有變量,這樣私有變量也不是“私有”了