1. 程式人生 > 其它 >python 三分類的啞編碼_運維架構師-Python 自動化運維開發-007

python 三分類的啞編碼_運維架構師-Python 自動化運維開發-007

技術標籤:python 三分類的啞編碼

b7c6a7b1-a028-eb11-8da9-e4434bdf6706.png

*運維架構師-Python 自動化運維開發-007

進階用法

1. 程式碼執行時間分析

命令:%time%timeit,如下:

b8c6a7b1-a028-eb11-8da9-e4434bdf6706.png

bac6a7b1-a028-eb11-8da9-e4434bdf6706.png

bcc6a7b1-a028-eb11-8da9-e4434bdf6706.png

2. IPython HTML Notebook

HTML Notebook是在瀏覽器中使用的互動式環境,現在最新版本又叫做Jupyter Notebook,功能很強大,完全是一個B/S模式的IDE,體驗非常棒。可以用以下命令開啟:

  • 安裝notebook:pip install notebook
  • 在命令列中開啟notebook:ipython notebook(或者:jupyter notebook
  • 出現一個帶token的url,把url複製到瀏覽器中,即出現如下頁面:

c0c6a7b1-a028-eb11-8da9-e4434bdf6706.png
  • 點選右上角的
    New
    —>
    python 2
    即可開啟互動式環境:

c1c6a7b1-a028-eb11-8da9-e4434bdf6706.png
  • 在輸入行中輸入
    %pylab inline
    命令並執行(Shift + Enter快捷鍵),即可無縫整合matplotlib的繪圖功能到頁面中,如圖:

c2c6a7b1-a028-eb11-8da9-e4434bdf6706.png

3. IPython個性化配置

配置檔案在如下目錄: Unix:~/.config/ipython/ Windows:%HOME%/.ipython/ 根據配置檔案中的註釋,即可修改相應的配置。

補充內容

一,我們操作程式碼的方式 終端 檔案 終端 字串需要用引號

檔案 檔名以.py結尾 直譯器申明 終端執行檔案

輸入命令的執行流程 屬於程式碼-->直譯器--->語法詞法分析

在 /root 目錄下建立 hello.py 檔案,內容如下:

`print` `"hello,world"`

執行 hello.py 檔案,即: python /root/hello.py

python內部執行過程如下:

c3c6a7b1-a028-eb11-8da9-e4434bdf6706.png

二、直譯器

上一步中執行 python /home/dev/hello.py 時,明確的指出 hello.py 指令碼由 python 直譯器來執行。

如果想要類似於執行shell指令碼一樣執行python指令碼,例: ./hello.py,那麼就需要在 hello.py 檔案的頭部指定直譯器,如下:

`#!/usr/bin/env python`` ` `print` `"hello,world"`

如此一來,執行: ./hello.py 即可。

ps:執行前需給予 hello.py 執行許可權,chmod 755 hello.py

#!/usr/bin/env python 
print "hello,世界"

三、內容編碼

python直譯器在載入 .py 檔案中的程式碼時,會對內容進行編碼(預設ascill)

ASCII(American Standard Code for Information Interchange,美國標準資訊交換程式碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多隻能用 8 位來表示(一個位元組),即:2**8 = 256,所以,ASCII碼最多隻能表示 256 個符號。

顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字元和符號的編碼,即:Unicode

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字元編碼。Unicode 是為了解決傳統的字元編碼方案的侷限而產生的,它為每種語言中的每個字元設定了統一併且唯一的二進位制編碼,規定雖有的字元和符號最少由 16 位來表示(2個位元組),即:2 **16 = 65536,注:此處說的的是最少2個位元組,可能更多

UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個位元組,而是將所有的字元和符號進行分類:ascii碼中的內容用1個位元組儲存、歐洲的字元用2個位元組儲存,東亞的字元用3個位元組儲存...

所以,python直譯器在載入 .py 檔案中的程式碼時,會對內容進行編碼(預設ascill),如果是如下程式碼的話:

報錯:ascii碼無法表示中文

四、註釋

  當行注視:# 被註釋內容

  多行註釋:""" 被註釋內容 """

五、執行指令碼傳入引數

Python有大量的模組,從而使得開發Python程式非常簡潔。類庫有包括三中:

  • Python內部提供的模組
  • 業內開源的模組
  • 程式設計師自己開發的模組

Python內部提供一個 sys 的模組,其中的 sys.argv 用來捕獲執行執行python指令碼時傳入的引數

`#!/usr/bin/env python``# -*- coding: utf-8 -*-`` ` `import` `sys`` ` `print` `sys.argv`

六、 pyc 檔案

執行Python程式碼時,如果匯入了其他的 .py 檔案,那麼,執行過程中會自動生成一個與其同名的 .pyc 檔案,該檔案就是Python直譯器編譯之後產生的位元組碼。

ps:程式碼經過編譯可以產生位元組碼;位元組碼通過反編譯也可以得到程式碼。

八、輸入

`#!/usr/bin/env python``# -*- coding: utf-8 -*-`` ` `# 將使用者輸入的內容賦值給 name 變數``name ``=` `raw_input``(``"請輸入使用者名稱:"``)`` ` `# 列印輸入的內容``print` `name`

輸入密碼時,如果想要不可見,需要利用getpass 模組中的 getpass方法,即:

`#!/usr/bin/env python``# -*- coding: utf-8 -*-`` ` `import` `getpass`` ` `# 將使用者輸入的內容賦值給 name 變數``pwd ``=` `getpass.getpass(``"請輸入密碼:"``)`` ` `# 列印輸入的內容``print` `pwd`