一, python字元編碼:
python解釋器在加載".py"檔案中的代碼時,會對内容進行編碼(預設ASCII).
1. ASCII(American Standard Code for Information Interchange,美國标準資訊交換代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言,其最多隻能用8位來表示(一個位元組),即2**8 = 256,是以ASCII碼最多隻能表示 256 個符号。
顯然ASCII碼無法将世界上的各種文字和符号全部表示,是以就需要新出一種可以代表所有字元和符号的編碼,即Unicode.
2. Unicode字元編碼:
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字元編碼。Unicode 是為了解決傳統的字元編碼方案的局限而産生的,它為每種語言中的每個字元設定了統一并且唯一的二進制編碼,規定所有的字元和符号最少由16位來表示(至少2個位元組),即2**16 = 65536.
Unicode的出現解決了傳統的字元編碼方案的局限,但是卻引出了另一個問題,即浪費空間;于是就又有了一種字元編碼UTF-8.
3. UTF-8字元編碼
UTF-8是對Unicode編碼的壓縮和優化,它不再使用最少2個位元組,而是将所有的字元和符号進行分類:ascii碼中的内容用1個位元組儲存、歐洲的字元用2個位元組儲存,東亞的字元用3個位元組儲存等等.(一個位元組用8位表示)。
注:
python2.7版本預設使用的是unicode編碼.
python3.x版本預設使用utf-8編碼,不用再在代碼前加"_*_ coding:utf-8 _*_ .
二, Python代碼書寫格式:
第一行:解釋器.
第二行:編碼.
三,初識子產品和位元組碼:
Python有大量的子產品,進而使得開發Python程式非常簡潔。類庫有包括三中:
Python内部提供的子產品
業内開源的子產品
程式員自己開發的子產品
示例:使用程式員自己開發的子產品
<code>root@Python:</code><code>/python/python3</code><code># ls</code>
<code>master.py slave.py</code>
<code>root@Python:</code><code>/python/python3</code><code># cat master.py </code>
<code>#!/usr/bin/env python</code>
<code># _*_ coding:utf-8 _*_ </code>
<code>import</code> <code>slave</code>
<code>print(</code><code>"master"</code><code>) </code>
<code>root@Python:</code><code>/python/python3</code><code># cat slave.py </code>
<code>print(</code><code>"slave"</code><code>) </code>
<code>root@Python:</code><code>/python/python3</code><code># python slave.py </code>
<code>slave</code>
<code>root@Python:</code><code>/python/python3</code><code># python master.py </code>
<code>master</code>
<code>root@Python:</code><code>/python/python3</code><code># //子產品導入成功.</code>
四,位元組碼 - pyc檔案
執行Python代碼時,如果導入了其他的 .py 檔案,那麼,執行過程中會自動生成一個與其同名的 .pyc 檔案,該檔案就是Python解釋器編譯之後産生的位元組碼。
注:代碼經過編譯可以産生位元組碼;位元組碼通過反編譯也可以得到代碼。
例:
<code>root@Python:</code><code>/python/python3</code><code># ls -a</code>
<code>. .. master.py slave.py slave.pyc</code>
注:.py檔案和.pyc檔案可以借助額外的工具反解.
五,互動式輸入
raw_input()與input(): 用于和使用者互動,等待使用者輸入内容;
注:raw_input()函數和input()函數在python2.X/3.x中的差別:
2.x版本:
raw_input(): 輸入的str或int都會被轉化為str type;
input(): 隻能識别到int type,對于str type會報錯;
3.x版本:
raw_input(): input和raw_input 整合了,沒有了raw_input().
input(): 輸入的str或int都會被轉化為str type;如果要得到int類型,需用int轉換.
注:3.x版本中的input()函數,互動式輸入的内容必須是int類型,即數字,它才能轉換為相應的int類型;如果互動式輸入的内容是str類型,則轉換為int type時會報錯.
示例:
1)代碼内容:
<code>root@Python:</code><code>/python/python3</code><code># vim 01.py</code>
<code>name = input(</code><code>"Please input name:"</code><code>)</code>
<code>print(name)</code>
<code>ss = </code><code>type</code><code>(name)</code>
<code>print(ss)</code>
執行結果:
<code>root@Python:</code><code>/python/python3</code><code># python 01.py</code>
<code>Please input name:yangbin </code><code>//</code><code>輸入内容.</code>
<code>yangbin</code>
<code><class </code><code>'str'</code><code>> </code><code>//</code><code>執行結果.</code>
<code>Please input name:1212 </code><code>//</code><code>輸入内容.</code>
<code>1212</code>
<code>root@Python:</code><code>/python/python3</code><code>#</code>
2)代碼内容:
<code>#!/usr/bin/env python </code>
<code>name = int(input(</code><code>"Please input name:"</code><code>))</code>
執行結果:
<code>Please input name:yangbin </code><code>//</code><code>輸入str類型後轉換報錯.</code>
<code>Traceback (most recent call last):</code>
<code> </code><code>File </code><code>"01.py"</code><code>, line 4, </code><code>in</code> <code><module></code>
<code> </code><code>name = int(input(</code><code>"Please input name:"</code><code>)) </code>
<code>ValueError: invalid literal </code><code>for</code> <code>int() with base 10: </code><code>'yangbin'</code>
<code>root@Python:</code><code>/python/python3</code><code># python 01.py</code>
<code>Please input name:1212 </code><code>//</code><code>輸入int類型後轉換成功.</code>
<code><class </code><code>'int'</code><code>></code>
在互動式模式下,當輸入密碼時,如果想要密碼不可見,需要利用getpass子產品中的getpass方法。
<code>#!/usr/bin/env python </code>
<code>import</code> <code>getpass </code>
<code>pwd</code> <code>= getpass.getpass(</code><code>"請輸入密碼:"</code><code>) </code>
<code>print(</code><code>pwd</code><code>)</code>
<code>root@Python:</code><code>/python/python3</code><code># python 02.py</code>
<code>請輸入密碼: </code><code>//</code><code>此處輸入密碼不可見.</code>
<code>123456 </code><code>//print</code><code>顯示出了密碼.</code>
第二節完成!
本文轉自 羽豐1995 51CTO部落格,原文連結:http://blog.51cto.com/13683137989/1895528