基礎知識 python是一門腳本語言,它是解釋執行的。 python使用縮進做為語法,而且python2環境下同一個py文件中不能同時存在tab和空格縮進,否則會出錯,建議在IDE中顯示縮進符。 python在聲明變數時不寫數據類型,可以type(xx)來獲取欄位的類型,然後可以int(),list ...
基礎知識
python是一門腳本語言,它是解釋執行的。
python使用縮進做為語法,而且python2環境下同一個py文件中不能同時存在tab和空格縮進,否則會出錯,建議在IDE中顯示縮進符。
python在聲明變數時不寫數據類型,可以type(xx)來獲取欄位的類型,然後可以int(),list()等進行類型強轉
條件判斷是If和elif,後面加冒號:可以不寫()
沒有++和--,有+=和-=
說明:本文沒有特殊說明的都是指在python2環境下
列表和字典
有序字典:from
collections import OrderedDict,其它用法和dict一致
如果tuple中只有一個元素需要這樣寫:(1,)
,直接寫(1)會被當成int
列表排序:sorted(list, key = lambda x: x.id),註意排序是不返回內容的,而是會修改原list。自定義排序使用cmp,示例:self.disData.sort(cmp = self.contentCmp)
遍歷列表
在遍歷列表時,即有類似於C#中的foreach也有for,例子如下:
for index,data in enumerate(list):
pass
for data in list:
pass
遍歷字典
for k, v in dict.iteritems():
print k, v
列表解包
對於一個列表,可以直接解包,如果不需要的元素,可以使用_來顯示,比如
list1 = [1,10,100,50,30]
a,b,c,_=list1 # 這樣就提取了list1中的前三個元素
#用在參數傳參數時,可以在list前加*來解包參數
def test(lv,atk):
pass
list2=[1,888]
test(*list2)
調試和列印
python對象是可以直接列印出來,而對於又封裝了一層或者列印出來是 object at 0x00000282C2D4F858>
的,可以通過obj.__dict__
來列印詳細數據。
因為python中任何都是對象,除了少除自定義對象都是有__dict__的
使用dir(obj)列印一個對象的所有方法
inspect
inspect用來列印函數調用堆棧,它還有其它的用途,具體可查看:
Python 標準庫 inspect 檢查對象 | Python 教程 - 蓋若 (gairuo.com)
dict,list,tuple判空
對於一個dict,如果沒有數據(dictxx={})但它不是None,可通過if xx 來判斷,同理list也是可以這樣來判斷。在python中無數據和None是個東西,是不等價的。
示例:
tuple1 = ()
if not tuple1:
print ("空元組")
dict1= {}
if not dict1:
print ("空字典")
list1 = [1,"a"]
print list1
函數或屬性判空
通過:hasattr(對象,"名字")來判斷:
- 類是否有某個函數
- 對象是否有某個屬性
腳本語言這點和強類型語言是不一樣,在寫代碼時IDE不會幫你檢查這種錯誤。
__str__
和__repr__
這兩個函數都可理解為C#中的tostring,
當在命令行中調用obj時,會調用__repr__來列印,
工具函數
filter(過濾函數,列表)
zip()將多個list打包一個包含多個tuple的列表,以最短的list為準,取相同位置的元素出來放到tuple中
面向對象
python是可以多繼承的,如果查找同名函數是優先從左往右查找MRO(Method Resolution Order),在B站上有個視頻講的很詳細:https://www.bilibili.com/video/BV1V5411S7dY
裝飾器
可以理解為把方法進行了一層封裝,當在調用某個函數時會自動傳到裝飾器中做檢查
裝飾器 - Carcar019 - 博客園 (cnblogs.com)
熱更新和熱重載
python原生支持熱重載(reload),運行期間不重啟來達到重載入腳本