1. 程式人生 > 實用技巧 >【Python】快速複習指南-Quick Review

【Python】快速複習指南-Quick Review

上篇已經說過需要使用python的背景了(java不會,.Net SDK沒有與時俱進),沒辦法,只有去試試python。不過距離上一次使用python,已經過去了4年了。革命需要,必須快速把python撿起來,看懂專案,並編寫python指令碼。我大致總結如下幾個方面,便可完成快速複習:

1.python程式的入口

首先python是一門解釋型語言,按順序執行。其次每個模組都有一個 __name__ 屬性,當其值是 __main__ 時,表明該模組自身在執行,否則這個模組就是被引入。

dosomething1()
if(__name__=="__main__"):
	print("Main")
else:
	print(__name__)
dosomething2()

所以上述程式碼python test.py執行順序

  • dosomething1()
  • print("Main")
  • dosomething2()

如果是被引入的,則執行順序

  • dosomething1()
  • dosomething2()

2.python命令列引數

python test.py arg1 arg2 arg3

pyvmomi-community-samples裡面很多sample都是通過命令列引數來進行除錯,然後有命令列解析方法解析命令,所以要執行這些示例,需要傳命令列引數,在Visual Studio Code中,可以去編輯launch.json

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: 當前檔案",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "args": [
        "--server",
        "192.168.0.110",
        "--username",
        "[email protected]",
        "--password",
        "VMware1!"
      ]
    }
  ]
}

3.python程式碼縮排

python沒有花括號{},全靠縮排來標識程式碼塊,限制變數作用域,還有一點對於從.net過來的我來說很變態的一點,縮排不能空格和tab混用。空格還必須是4的倍數。算了,人家的領域,規規矩矩按照要求來吧。

這裡還是藉助Visual Studio Code幫我們省點事吧。

Preference->Settings

  • Insert Space:勾選,按Tab,就會插入空格
  • Tab Size:填4,按Tab就是4個空格

4.python類

必需內容:

  • class關鍵字

  • __init__建構函式

  • 所有的類方法都必須包含self

  • 建立例項,沒有new

    關鍵字

  • 繼承用小括號()

    • class 派生類名(基類名)
      
  • 私有變數,前面加兩個下劃線

    • __private_attrs
  • 公開變數,沒有兩個下劃線

  • protected 型別的變數,只有一個下劃線,即保護型別只能允許其本身與子類進行訪問,不能用於 from module import *

  • 重寫很簡單,什麼關鍵字都沒有,只要是繼承了父類,直接可以定義與父類簽名一樣的方法,相對於其他編譯型語言還是省了個關鍵字

    • #!/usr/bin/python
      # -*- coding: UTF-8 -*-
       
      class Parent:        # 定義父類
         def myMethod(self):
            print '呼叫父類方法'
              
      class Child(Parent): # 定義子類
         def myMethod(self):
            print '呼叫子類方法'
      

5.python模組和包

模組

就是一個python檔案

# 匯入整體模組
import xxx

# 匯入模組中的某部分內容
from xxx imoprt yyy

模組是檔案,那麼包就是一個資料夾

包是使用“帶點的模組名稱”來構造Python模組名稱空間的一種方法。

例如A.B,即指定子模組B,在A包中。

包的資料夾必需內容:

  • __init__.py:使Python將包含檔案的目錄資料夾視為包
    • __init__.py可以只是一個空檔案,但是它也可以執行包的初始化程式碼,或者設定__all__變數

6.python搜尋路徑

當匯入一個python模組,Python 解析器對模組位置的搜尋順序是:

  • 當前目錄
  • 如果不在當前目錄,Python 則搜尋在環境變數 PYTHONPATH 下的每個目錄。
    • 有些開源專案,引入本地包的時候,寫的是全路徑,這個基本都是PYTHONPATH 缺失當前專案,新增即可
  • 如果都找不到,Python會察看預設路徑。UNIX下,預設路徑一般為/usr/local/lib/python/。

7.python安裝whl

whl其實就是一個壓縮包,把字尾名改為.zip,是可以完美解壓的。一般情況,一個whl檔案就是一個python包。安裝方式

#安裝wheel
pip install wheel

#安裝包
pip install xxxx.whl

8.python匯出依賴和安裝

一般一個python會有很多依賴,我們可以手動匯出所有的依賴包:

  • 匯出
pip freeze > requestments.txt
  • 安裝:安裝匯出的requestments.txt的依賴
pip install -r requirements.txt

9.python安裝git遠端包

先上命令

pip install --upgrade git+https://gitee.com/RandyField/vsphere-automation-sdk-python.git

這個看起來是一個命令,其實內部經歷了兩個步驟

#克隆
git clone https://gitee.com/RandyField/vsphere-automation-sdk-python.git

#安裝依賴
python setup.py install

參考連結

https://docs.python.org/3/tutorial/modules.html

https://docs.python.org/3/tutorial/modules.html#packages

https://blog.csdn.net/Iron_Ye/article/details/80044242

https://blog.csdn.net/hhy_csdn/article/details/82263757

https://www.cnblogs.com/kaerxifa/p/11473841.html