Python初學之注意事項__Python

來源:互聯網
上載者:User

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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.