Python一切皆對象。
1.每個import語句盡量只匯入一個模組,避免一次匯入多個模組
2.如果語句太長,可在行尾使用續行符‘\’表示下面緊接的一行仍屬於當前語句。但是一般建議是用括弧來包含多行內容。
3.一般而言,運算子兩側。函數參數之間、逗號兩側建議使用空格進行分隔,不同的代碼塊之間、不同的函數定義、不同的類定義之間則建議增加一個空行以增加可讀性。
4.適當使用異常處理來提高代碼的健壯性和容錯性,但是不能過於依賴異常處理,適當的顯示判斷是必要的。
5.不能使用關鍵詞作為變數,可以匯入keyword,print keyword.kwlist 查看所有的Python關鍵字.
6.不建議使用系統內建的模組名作為變數。可以通過dir(__builtins__)查看所有內之模組類型和函數。
7.變數名區分大小寫。
8.使用pip工具管理python擴充庫。Python3.4.0和Python2.7.9之前的版本需要首先安裝pip命令才可以使用,而這之後安裝包已經整合了該命令,不需要安裝。
查看pip命令是否有重複路徑,cmd命令:where pip。
從結果中,可以看到會存在兩個路徑,其中一個為python3.x的路徑,一個為python2.x的路徑。
拷貝環境變數path到txt中,去掉有關python3.x的相關路徑,儲存,重新開個控制台,輸入pip,可以看到help資訊,問題完美解決。
多版本pip用法:
那麼,有人環境中的確存在兩個版本的Python,並且都安裝了pip,那麼,如何為指定版本的python用pip安裝包呢。方法如下:
python2 -m pip install xxx
or
python3 -m pip install xxx
通過指明python版本來調用對應的pip程式。
重要:使用 Python -m pip install xxx來安裝第三方模組。
9.python指令碼的__name__屬性
若指令碼作為模組被匯入,則其__name__屬性被自動化佈建為模組名,若指令碼獨立運行,則其__name__屬性值被設定為__main__。假設檔案a.py中只有一行代碼:
print __name__
則在IDLE或者在命令提示字元中直接運行時結果為:__main__。但是若把改檔案作為模組匯入,則結果是a。
利用__name__屬性,在編寫一個包含大量函數的模組時,不希望其直接運行後續程式則可以在程式中添加如下代碼:
if __name__ = ‘main’:
print‘please use me as a module’
這樣程式直接運行時,會得到提示。而使用import語句匯入該模組可以使用其中的類方法等。
10.python的包
在Python中,一個.py檔案就稱之為一個模組(Module);如果不同的人編寫的模組名相同怎麼辦。為了避免模組名衝突,Python又引入了按目錄來組織模組的方法,稱為包(Package);引入了包以後,只要頂層的包名不與別人衝突,那所有模組都不會與別人衝突。現在,abc.py模組的名字就變成了mycompany.abc,類似的,xyz.py的模組名變成了mycompany.xyz。請注意,每一個包目錄下面都會有一個__init__.py的檔案,這個檔案是必須存在的,否則,Python就把這個目錄當成普通目錄,而不是一個包。__init__.py可以是空檔案,也可以有Python代碼,因為__init__.py本身就是一個模組,而它的模組名就是mycompany。
類似的,可以有多級目錄,組成多級層次的包結構。每一層都要有__init__.py檔案,即在包的每個目錄中都必須包含一個__init__.py檔案,這個檔案可以為空白,僅用於表示該目錄是一個包。__init__.py檔案的主要用途是設定__all__變數以及初始化包所需要的代碼,其中__all__變數中定義的對象可以在使用from。。import*時,全部被正確匯入。
11.
指令碼語言的第一行,目的就是指出,你想要你的這個檔案中的代碼用什麼可執行程式去運行它,就這麼簡單。
#!/usr/bin/python : 是告訴作業系統執行這個指令碼的時候,調用 /usr/bin 下的 python 解譯器;
#!/usr/bin/env python(推薦): 這種用法是為了防止作業系統使用者沒有將 python 裝在預設的 /usr/bin 路徑裡。當系統看到這一行的時候,首先會到 env 設定裡尋找 python 的安裝路徑,再調用對應路徑下的解譯器程式完成操作。
#!/usr/bin/python 相當於寫死了python路徑;
#!/usr/bin/env python 會去環境設定尋找 python 目錄,推薦這種寫法
12.注意:#coding=utf-8 的 = 號兩邊不要空格。
13.pycharm註冊
(1)在啟用介面的License server輸入:http://idea.liyang.io/;或者:點擊help→Register→License sever ,輸入http://idea.liyang.io
(2)在瀏覽器的地址欄輸入:http://idea.lanyus.com/,該網址,無需修改使用者名稱,點擊擷取註冊碼。複製該註冊碼,粘貼在註冊介面的Activation code的輸入框中,點擊 ok。
14.
Python 3.X 的版本中已經沒有 cmp 函數,如果你需要實現比較功能,需要引入 operator 模組,適合任何對象,包含的方法有:
operator.lt(a, b)
operator.le(a, b)
operator.eq(a, b)
operator.ne(a, b)
operator.ge(a, b)
operator.gt(a, b)
operator.__lt__(a, b)
operator.__le__(a, b)
operator.__eq__(a, b)
operator.__ne__(a, b)
operator.__ge__(a, b)
operator.__gt__(a, b)
執行個體
>>> import operator
>>> operator.eq('hello', 'name');
False
>>> operator.eq('hello', 'hello');
True
cmp(x, y) 函數在 python3.x 中不可用,可用以下函數替代:
operator.lt(a, b) lt(a, b) 相當於 a < boperator.le(a, b) le(a,b) 相當於 a <= boperator.eq(a, b) eq(a,b) 相當於 a == boperator.ne(a, b) ne(a,b) 相當於 a != boperator.ge(a, b) gt(a,b) 相當於 a > boperator.gt(a, b) ge(a, b)相當於 a>= b
15.冒泡排序
#!/usr/bin/python# -*- coding: UTF-8 -*-array = [9,2,7,4,5,6,3,8,1,10] L = len(array)for i in range(L): for j in range(L-i): if array[L-j-1]<array[L-j-2]: array[L-j-1],array[L-j-2]=array[L-j-2],array[L-j-1]for i in range(L): print array[i