解釋器環境與選項
python解釋器啟動:
<code>python [options] [</code><code>-</code><code>c cmd | filename | </code><code>-</code> <code>] [args]</code>
選項
描述
-3
啟用将從python3中删除或更改某些功能的警告
-B
阻止在導入時建立.pyc或.pyo檔案
-E
忽略環境變量
-h
列印所有可用指令行選項的清單
-i
在程式執行後進入互動模式
-m module
以腳本的形式運作庫子產品module
-O
優化模式
-OO
優化模式,在建立.pyo檔案時删除文檔字元串
-Q arg
指定python2中除法運算符的行為,值為-Qold(預設值)、-Qnew、-Qwarn或-Qwarnall之一
-s
阻止将使用者站點目錄添加到sys.path
-S
阻止包含site初始化子產品
-t
報告關于不一緻的标簽使用警告
-tt
由于不一緻的标簽使用而導緻TabError異常
-u
未緩沖的二進制stdout和stdin
-U
Unicode字面量。所有字元串字面量都以Unicode形式處理(僅在python2中使用)
-v
詳細模式。跟蹤導入語句
-V
列印版本号并退出
-x
跳過源程式的第一行
-c cmd
以字元串形式執行cmd
python解釋器環境變量:
環境變量
PYTHONPATH
以冒号分隔的子產品搜尋路徑
PYTHONSTARTUP
在以互動方式啟動時執行的檔案
PYTHONHOME
python安裝的位置
PYTHONINSPECT
相當于-i選項
PYTHONUNBUFFERED
相當于-u選項
PYTHONIOENCODING
針對stdin、stdout和stderr的編碼和錯誤處理。這是一個encoding[:errors]形式的字元串,如utf-8或utf-8:ignore
PYTHONDONIWRITEBYTECODE
相當于-B選項
PYTHONOPTIMIZE
相當于-O選項
PYTHONNOUSERSITE
相當于-s選項
PYTHONVERBOSE
相當于-v選項
PYTHONUSERBASE
每個使用者站點包的根目錄
PYTHONCASEOK
訓示為導入所使用的子產品名稱使用不區分大小寫的比對方式
python代碼的測試、調試與探查
基于文檔字元串來進行測試。
如果函數、類或子產品的第一行是一個字元串,這個字元串就稱為文檔字元串(docstrings)。
内置函數help()或對象的預設方法__doc__可以顯示這些文檔字元串。
<code>In [</code><code>1</code><code>]: </code><code>def</code> <code>Sum</code><code>(num1,num2):</code>
<code> </code><code>...: </code><code>'''The sumary of num1 and num2.</code>
<code> </code><code>...: >>> Sum(2,5)</code>
<code> </code><code>...: 7</code>
<code> </code><code>...: >>> Sum(12,77)</code>
<code> </code><code>...: 89</code>
<code> </code><code>...: '''</code>
<code> </code><code>...: </code><code>return</code> <code>num1 </code><code>+</code> <code>num2</code>
<code> </code><code>...:</code>
<code>In [</code><code>2</code><code>]: </code><code>help</code><code>(</code><code>Sum</code><code>)</code>
<code>In [</code><code>3</code><code>]: </code><code>Sum</code><code>.__doc__</code>
<code>Out[</code><code>3</code><code>]: </code><code>'The sumary of num1 and num2.\n >>> Sum(2,5)\n 7\n >>> Sum(12,77)\n 89\n '</code>
doctest子產品:
doctest子產品允許在文檔字元串内嵌入注釋以顯示各種語句的期望行為,尤其是函數和方法的結果
此處的文檔字元串看起來如同一個互動式shell會話;
可用于測試文檔是否與程式主體保持同步,或基于文檔對程式本身做測試
自定義子產品mymod:
<code>[root@localhost test]</code><code># pwd</code>
<code>/</code><code>root</code><code>/</code><code>test</code>
<code>[root@localhost test]</code><code># cat mymod.py</code>
<code>#!/usr/bin/python</code>
<code>def</code> <code>add(num1,num2):</code>
<code> </code><code>'''</code>
<code> </code><code>>>> add(12,43)</code>
<code> </code><code>55</code>
<code> </code><code>return</code> <code>num1 </code><code>+</code> <code>num2</code>
在互動式模式下使用doctest子產品進行測試:
<code>In [</code><code>4</code><code>]: </code><code>import</code> <code>sys</code>
<code>In [</code><code>5</code><code>]: sys.path.append(</code><code>'/root/test'</code><code>) </code><code>#将/root/test加入子產品搜尋路徑</code>
<code>In [</code><code>6</code><code>]: </code><code>import</code> <code>mymod</code>
<code>In [</code><code>7</code><code>]: </code><code>import</code> <code>doctest</code>
<code>In [</code><code>8</code><code>]: doctest.testmod(mymod)</code>
<code>Out[</code><code>8</code><code>]: TestResults(failed</code><code>=</code><code>0</code><code>, attempted</code><code>=</code><code>1</code><code>)</code>
<code>In [</code><code>9</code><code>]: doctest.testmod(mymod,verbose</code><code>=</code><code>True</code><code>)</code>
<code>Trying:</code>
<code> </code><code>add(</code><code>12</code><code>,</code><code>43</code><code>)</code>
<code>Expecting:</code>
<code>ok</code>
<code>1</code> <code>items had no tests:</code>
<code> </code><code>mymod</code>
<code>1</code> <code>items passed </code><code>all</code> <code>tests:</code>
<code> </code><code>1</code> <code>tests </code><code>in</code> <code>mymod.add</code>
<code>1</code> <code>tests </code><code>in</code> <code>2</code> <code>items.</code>
<code>1</code> <code>passed </code><code>and</code> <code>0</code> <code>failed.</code>
<code>Test passed.</code>
<code>Out[</code><code>9</code><code>]: TestResults(failed</code><code>=</code><code>0</code><code>, attempted</code><code>=</code><code>1</code><code>)</code>
如果文檔字元串中的結果與預期結果不一緻,測試會顯示出錯的結果資訊。
建立可自測試的子產品:
在子產品的尾部添加如下代碼即可
<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>
<code> </code><code>import</code> <code>doctest</code>
<code> </code><code>print</code> <code>doctest.testmod(verbose</code><code>=</code><code>True</code><code>)</code>
<code>[root@localhost test]</code><code># python mymod.py</code>
<code> </code><code>__main__</code>
<code> </code><code>1</code> <code>tests </code><code>in</code> <code>__main__.add</code>
<code>TestResults(failed</code><code>=</code><code>0</code><code>, attempted</code><code>=</code><code>1</code><code>)</code>
此類子產品在python解釋器中直接運作時即能進行自我測試。
本文轉自 忘情OK 51CTO部落格,原文連結:http://blog.51cto.com/itchentao/1890283,如需轉載請自行聯系原作者