python是一種解釋型腳本語言。java
python語言是一句一句執行的,能夠再命令提示符中直接編寫程序並隨時得到結果python
python支持面向對象c++
python語言結構和語法十分簡單,十分容易學習。(這兩天基本就能夠開始寫python了,那個機器人項目就是用python寫的。)程序員
python代碼易於閱讀,而且,易於維護(這一條是看來的,這可能只是一種感受問題。也多是由於,python代碼的層次性很是弱,代碼結構很是簡單,再加上很容易閱讀,所以容易維護)編程
標準庫十分普遍。(那個機器人項目=。=竟然只提供了python和c++庫)數組
可移植性好。數據結構
可擴展性好。這一條也是看來的。python能夠添加低層次的模塊到python解釋器,這些模塊使得程序員能夠添加或者定製本身的工具。(別的語言也能夠啊)app
對變量的第一次賦值就是聲明和定義。編程語言
num = 1; nums = 1, 2, 3; array = 'a', "b", 'sa', 3; num = array[1]; // num = "b" num = array[3]; // num = 3
經過上面的例子能夠看出來,變量的類型在運行時是能夠發生改變的。
另外,python中沒有字符類型。事實上也不須要有。函數
這至關於數組的概念,可是python的列表中容許出現不一樣類型的元素。
例如:
list1 = ['a', 'b', "c", 123 ]
python列表的索引從0開始,而且能夠一次訪問其中的多個元素。
例如:
sublist = list[0:4] sublist = list[0:]
上述語句訪問的是0, 1, 2, 3四個元素。
還能夠直接刪除列表中的一個元素:
del list[2];
對列表的操做還有:
list.append(o) # 列表尾追加元素o list.count(o) # 列表的元素個數 list.extend(o) # 將新列表的值所有追加到原列表中 list.index(o) # 返回列表中第一次出現這個值得位置 list.insert(index, o) # 插入o到位置index list.pop(o=list[-1]) # 移除列表的一個元素,並返回該元素的值 list.remove(o) # 移除列表中第一個這樣的值 list.reverse() # 將列表中的值倒置 list.sort([compFunc]) # 鏈表排序,compFunc用於指定比較函數,可選
python中還有元組(不容許修改的列表)、字典等數據結構。。不碼這兒了,語法什麼的大差不離
與其餘衆多支持面向對象編程的編程語言同樣,python使用class關鍵字來定義一個類。
class Foo: id = 1 def __init__(self, name): self.name = name id = id + 1 def displayself(self): print self.name, Foo.id
python中self是指向這個對象本身的引用。他必須做爲每一個方法的第一個參數。
每一個類的屬性分爲兩部分,一部分是在全部方法聲明以前聲明的變量,他們做爲全部對象共享的一個靜態變量,全部對象都持有相同的這個屬性,而且均可以改變他的值。在方法中聲明的屬性是這個類的私有屬性,每一個對象擁有不一樣的私有屬性。
foo1 = Foo("foo1") foo2 = Foo("foo2")
foo1.displayself() foo2.displayself()
__dict__: 一個字典,由類的屬性數據構成
__doc__: 類的文檔字符串,是類的第一個邏輯行的由三個引號括起來的字符串
__name__: 類名
__module__: 類定義所在的模塊
__bases__: 類的全部父類構成元素(包含了一個由全部父類組成的元組)
python擁有和java相似的垃圾回收機制。
python使用引用計數器來最總內存總的對象。
當對象的引用計數變爲0的時候,對象佔用的內存將被回收。可是回收發生在內存將要被寫滿的時候。
同事python還有一個循環引用垃圾收集器,即兩個對象分別持有對方的引用,可是沒有別的變量指向他們,所以他們也應該被垃圾回收因此,他們也應該被垃圾回收。所以python的垃圾回收機制由一個引用計數器和一個循環垃圾收集器組成。
python的對象中包含了內置的析構函數__del__,當對象的引用計數變爲0時,析構函數將被執行。
python支持多重繼承:
class Foo (Parent1, Parent2, Parent3...):
父類的構造函數必須在子類中親自調用:
class Foo(Foo2): def __init__(self): super().__init__(self);