Python3.3官方教程中文翻譯2:使用Python解釋器


 
2.使用Python解釋器
2.1調用解釋器
Python解釋器安裝目錄一般是/usr/local/bin/python3.3。將/usr/local/bin寫入Unix shell的搜索路徑,就可以在shell里輸入命令“python3.3”啟動解釋器。(在Unix平台上,Python3.x解釋器默認名字不是python,這樣就不會與Python2.x沖突。)安裝時可以選擇解釋器的安裝目錄,所有這個路徑也可能在其它地方。可以用本地的Python guru或是讓系統管理員檢查一下。(/usr/local/python也是一個很常用的路徑。)
Windows平台上,Python安裝目錄一般是C:\Python33,在安裝的過程中同樣可以變更安裝目錄。在DOS命令行中輸入“set path=%path%;C:\python33”可將這個路徑加入你的系統path中。
輸入一個文件結尾符(Unix下為Control-D,windows下為Control-Z)可以讓解釋器以0值退出狀態退出。如果快捷鍵不起作用,可以輸入“quit()”命令來退出解釋器。
解釋器按行編輯的特性並不很復雜。在Unix平台,解釋器可能得到GNU readline庫的支持,從而得到復雜的交互式編輯和歷史記錄功能。在Python提示欄中輸入Control-P可以快速檢查命令行編輯是否支持。如果發出嗶嗶的聲音,你可以使用命令行編輯功能。附錄《交互式輸入編輯和歷史記錄替換》中有更多快捷鍵的介紹。如果輸入后什么都沒發生,或者是P被打印出來的情況,命令行編輯的功能不能使用。你只能夠刪掉當前行的命令。
解釋器的操作有點像Unix下的shell:在終端設備上用標准輸入調用它,它會交互式地解讀執行命令,相當於shell中的-c選項。由於Python的語句經常包含着shell下空格之類的特殊字符,用戶最好在命令兩端加單引號。
有的Python模塊可以當做腳本使用。可以通過python -m modlue[arg] ...來調用模塊。這就像在命令行里輸出模塊的全名執行模塊的源代碼一樣。
使用一個腳本文件時,經常會運行腳本進入交互模式。可以在腳本前面加-i參數來實現。
2.1.1參數傳遞
對解釋器來說,腳本的名字和附加的參數會轉化成一個字符串列表,分配給sys模塊的argv變量。執行import sys可以獲取這個列表。沒有給定腳本和參數的時候,列表還有一個元素sysy.argv[0],它是一個空字符串。當腳本的名字指定成‘-’(意味着標准輸入),sys.argv[0]被設成了‘-’。使用-c的命令,sys.argv[0]被設成了‘-c’。-m模塊被使用時,sys.argv[0]被設成了指定模塊的全名。-c command和-m module之后的參數不會被Python編譯器的選項處理機制截獲,而是留在sys.argv中被命令或是模塊處理。
2.1.2交互模式
當命令從終端讀取,解釋器處於交互模式。在這個模式中,它根據主提示符來執行,主提示符的標識是“>>>”,其后的部分稱為從提示符,標識為“...”。第一行前面,解釋器打印出一條帶有版本號的歡迎信息和版權信息,如下:
 
$ python3.3
Python 3.3 (py3k, Sep 12 2007, 12:21:02)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
 
輸入多行結構需要從提示符。舉個例子,觀察一下這個if語句:
 
>>> the_world_is_flat = 1
 
>>> if the_world_is_flat:
 
...    print("Be careful not to fall off!")
 
...
 
Be careful not to fall off!
 
2.2解釋器及其環境
 
2.2.1錯誤處理
 
一個錯誤發生時,解釋器打印一條錯誤消息和棧跟蹤器。在交互模式下,它返回到主提示符。如果從文件輸入執行,打印出棧跟蹤器后解釋器帶着一個非零退出狀態退出。(異常可以由一個try語句中的except子句處理,這樣上下文就不會有錯誤信息。)一些致命錯誤會導致非零狀態退出,一般是由內部矛盾和內存泄露引起。所有錯誤信息都寫入標准錯誤流,命令中執行的普通輸出寫入標准輸出。
 
在主提示符或從提示符中輸入中斷符(Control-C或DEL)會取消輸入,返回主輸入符( GNU readline 包的一個bug可能會造成它無法正常工作)。執行命令時輸入中斷符會引發一個KeyboardInterrupt異常,用try語句來截獲它。
 
2.2.2可執行Python腳本
 
在BSD類Unix系統中,Python腳本像shell腳本一樣是可以直接執行的,只需在腳本開頭輸入“#! /usr/bin/env python3.3”指定文件和運行模式(確保解釋器在用戶Path里)。#!必須是文件的頭兩個字符。在某些平台,文件第一行必須以Unix類型的‘\n’結束,而不是windows的‘\r\n’。注意,‘#’是Python中行注釋的起始符。
 
腳本可以通過chmod命令指定執行模式和權限。命令如下:“$ chmod +x myscript.py”。
 
在windows系統里,沒有執行模式這一說法。Python安裝程序自動將.py后綴的文件與python.exe關聯起來。所以,只要雙擊Python文件就可以作為腳本運行。后綴名也可以是.pyw,這種情況下控制台窗口打開通常會被阻止。
 
2.2.3源程序編碼
 
Python源文件默認為UTF-8編碼進行處理。使用UTF-8編碼,我們可以在字符串、變量命名和注釋中使用世界上的大部分語言。可移植代碼需要遵循慣例:標准庫只是用ASCII字符集。為了正確地顯示所有的字符,你的編輯器需要將Python源文件識別為UTF-8編碼,同時還需要一種支持文件中所有字符的字體。
 
通過定義,也可以使用別的編碼方式代替UTF-8。可選編碼方式名單可以在Python庫的引用中找到,在codecs那一節。
 
如果你的編輯器不支持UTF-8編碼的文件,只能使用別的編碼格式。比如說Windows-1252,寫上“# -*- coding: cp-1252 -*-”,你就可以在源文件中使用Windows-1252字符集。這條編碼指定命令必須卸載文件的第一行或第二行。
 
2.2.4交互式的啟動文件
 
使用 Python 解釋器的時候,我們可能需要在每次解釋器啟動時執行一些命令。你可以設定一個叫PYTHONSTARTUP環境變量,變量值是包含啟動命令的文件名。這類似於 Unix shell的 .profile 文件。
 
包含啟動命令的文件在交互式會話下是只讀的,當Python從腳本里讀取命令或以終端/dev/tty做為外部命令源時則不會如此(盡管它們的行為很像是處在交互會話)。交互式命令與解釋器執行的命令處在同一個命名空間,所以它定義或引用的對象無需驗證就可以在交互式會話使用。你也可以在文件中改變sys.ps1和sys.ps2指令。
 
如果想從當前目錄執行附加的啟動文件,可以在全局啟動文件中使用像這樣的代碼“if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read())”執行。如果想在腳本中使用啟動文件,需要在腳本中明確地寫到:
 
import os
 
filename = os.environ.get('PYTHONSTARTUP')
 
if filename and os.path.isfile(filename):
 
    exec(open(filename).read())
 
2.2.5定制的模塊
 
Python提供兩個定制的方法:站點定制與用戶定制。
 
用戶定制的步驟是,首先需要找到用戶站點包(user site-packages)路徑位置。啟動Python執行以下程序:“ >>> import site>>> site.getusersitepackages()'/home/user/.local/lib/python3.2/site-packages' ”。接着在該目錄下創建一個名為usercustomize.py的文件,寫入需要的代碼。這個文件會影響Python調用過程,除非啟動命令使用-s的選項禁用自動引用(import)。
 
站點定制(sitecustomiz文件e)也是同樣的工作原理。在全局站點包(site-packages)路徑用管理員身份創建一個在用戶定制之前引用的文件。查看站點模塊文件(28.13 站點——站點配置方法)獲得更多信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM