.. _tut-using: **************************** 使用 Python 解释器 **************************** .. _tut-invoking: 调用 Python 解释器 ======================== Python è§£é‡Šå™¨é€šå¸¸è¢«å®‰è£…åœ¨ç›®æ ‡æœºå™¨çš„ :file:`/usr/local/bin/python3.5` 目录下。将 :file:`/usr/local/bin` 目录包å«è¿› Unix shell çš„æœç´¢è·¯å¾„里,以确ä¿å¯ä»¥é€šè¿‡è¾“å…¥: .. code-block:: text python3.5 命令æ¥å¯åŠ¨ä»–。[#]_ 由于 Python 解释器的安装路径是å¯é€‰çš„,这也å¯èƒ½æ˜¯å…¶å®ƒè·¯å¾„ï¼Œä½ å¯ä»¥è”系安装 Python 的用户或系统管ç†å‘˜ç¡®è®¤ï¼ˆä¾‹å¦‚,:file:`/usr/local/python` 就是一个常è§çš„选择)。 在 Windows 机器上,Python 通常安装在 :file:`C:\\Python35` ä½ç½®ï¼Œå½“ç„¶ä½ å¯ä»¥åœ¨è¿è¡Œå®‰è£…å‘导时修改æ¤å€¼ã€‚è¦æƒ³æŠŠæ¤ç›®å½•æ·»åŠ åˆ°ä½ çš„ PATH 环境å˜é‡ä¸ï¼Œä½ å¯ä»¥åœ¨ DOS 窗å£ä¸è¾“入以下命令:: set path=%path%;C:\python35 é€šå¸¸ä½ å¯ä»¥åœ¨ä¸»çª—å£è¾“入一个文件结æŸç¬¦ï¼ˆUnix 系统是 :kbd:`Control-D`,Windows 系统是 :kbd:`Control-Z`)让解释器以 0 状æ€ç é€€å‡ºã€‚å¦‚æžœé‚£æ²¡æœ‰ä½œç”¨ï¼Œä½ å¯ä»¥é€šè¿‡è¾“å…¥ ``quit()`` 命令退出解释器。 Python 解释器具有简å•çš„行编辑功能。在 Unix 系统上,任何 Python 解释器都å¯èƒ½å·²ç»æ·»åŠ 了 GNU readline 库支æŒï¼Œè¿™æ ·å°±å…·å¤‡äº†ç²¾å·§çš„交互编辑和历å²è®°å½•ç‰åŠŸèƒ½ã€‚在 Python 主窗å£ä¸è¾“å…¥ Control-P å¯èƒ½æ˜¯æ£€æŸ¥æ˜¯å¦æ”¯æŒå‘½ä»¤è¡Œç¼–辑的最简å•çš„方法。如果å‘å‡ºå˜Ÿå˜Ÿå£°ï¼ˆè®¡ç®—æœºæ‰¬å£°å™¨ï¼‰ï¼Œåˆ™è¯´æ˜Žä½ å¯ä»¥ä½¿ç”¨å‘½ä»¤è¡Œç¼–辑功能;更多快æ·é”®çš„介ç»è¯·å‚考 :ref:`tut-interacting`。如果没有任何声音,或者显示 ``^P`` å—符,则说明命令行编辑功能ä¸å¯ç”¨ï¼›ä½ åªèƒ½é€šè¿‡é€€æ ¼é”®ä»Žå½“å‰è¡Œåˆ 除已键入的å—符并é‡æ–°è¾“入。 Python 解释器有些æ“作类似 Unix shell:当使用终端设备(ttyï¼‰ä½œä¸ºæ ‡å‡†è¾“å…¥è°ƒç”¨æ—¶ï¼Œå®ƒäº¤äº’çš„è§£é‡Šå¹¶æ‰§è¡Œå‘½ä»¤ï¼›å½“ä½¿ç”¨æ–‡ä»¶åå‚æ•°æˆ–ä»¥æ–‡ä»¶ä½œä¸ºæ ‡å‡†è¾“å…¥è°ƒç”¨æ—¶ï¼Œå®ƒè¯»å–文件并将文件作为 *脚本* 执行。 第二ç§å¯åŠ¨ Python 解释器的方法是 ``python -c command [arg] ...``,这ç§æ–¹æ³•å¯ä»¥åœ¨ *命令行* 执行 Python è¯å¥ï¼Œç±»ä¼¼äºŽ shell ä¸çš„ `-c`_ 选项。由于 Python è¯å¥é€šå¸¸ä¼šåŒ…å«ç©ºæ ¼æˆ–其他特殊 shell å—符,一般建议将 *命令* 用å•å¼•å·åŒ…裹起æ¥ã€‚ 有一些 Python 模å—也å¯ä»¥å½“ä½œè„šæœ¬ä½¿ç”¨ã€‚ä½ å¯ä»¥ä½¿ç”¨ ``python -m module [arg] ...`` 命令调用它们,这类似在命令行ä¸é”®å…¥å®Œæ•´çš„路径å执行 *模å—* æºæ–‡ä»¶ä¸€æ ·ã€‚ 使用脚本文件时,ç»å¸¸ä¼šè¿è¡Œè„šæœ¬ç„¶åŽè¿›å…¥äº¤äº’模å¼ã€‚这也å¯ä»¥é€šè¿‡åœ¨è„šæœ¬ä¹‹å‰åŠ 上 `-i`_ å‚æ•°æ¥å®žçŽ°ã€‚ .. _tut-argpassing: å‚æ•°ä¼ é€’ ---------------- 调用解释器时,脚本åå’Œé™„åŠ å‚æ•°ä¼ å…¥ä¸€ä¸ªå为 ``sys.argv`` çš„å—ç¬¦ä¸²åˆ—è¡¨ã€‚ä½ èƒ½å¤ŸèŽ·å–这个列表通过执行 ``import sys``,列表的长度大于ç‰äºŽ1;没有给定脚本和å‚æ•°æ—¶ï¼Œå®ƒè‡³å°‘ä¹Ÿæœ‰ä¸€ä¸ªå…ƒç´ ï¼š``sys.argv[0]`` æ¤æ—¶ä¸ºç©ºå—符串。脚本å指定为 ``'-'`` ï¼ˆè¡¨ç¤ºæ ‡å‡†è¾“å…¥ï¼‰æ—¶ï¼Œ ``sys.argv[0]`` 被设定为 ``'-'``,使用 `-c`_ *指令* 时,``sys.argv[0]`` 被设定为 ``'-c'``。使用 `-m`_ *模å—* å‚数时,``sys.argv[0]`` 被设定为指定模å—çš„å…¨å。`-c`_ *指令* 或者 `-m`_ *模å—* 之åŽçš„å‚æ•°ä¸ä¼šè¢« Python 解释器的选项处ç†æœºåˆ¶æ‰€æˆªèŽ·ï¼Œè€Œæ˜¯ç•™åœ¨ ``sys.argv`` ä¸ï¼Œä¾›è„šæœ¬å‘½ä»¤æ“作。 .. _tut-interactive: äº¤äº’æ¨¡å¼ ---------------- 从 tty 读å–命令时,我们称解释器工作于 *交互模å¼*。这ç§æ¨¡å¼ä¸‹å®ƒæ ¹æ®ä¸»æ示符æ¥æ‰§è¡Œï¼Œä¸»æç¤ºç¬¦é€šå¸¸æ ‡è¯†ä¸ºä¸‰ä¸ªå¤§äºŽå·(``>>>``);继ç»çš„部分被称为 *从属æ示符*ï¼Œç”±ä¸‰ä¸ªç‚¹æ ‡è¯†(``...``)。在第一行之å‰ï¼Œè§£é‡Šå™¨æ‰“å°æ¬¢è¿Žä¿¡æ¯ã€ç‰ˆæœ¬å·å’ŒæŽˆæƒæ示:: $ python3.5 Python 3.5.2 (default, Mar 16 2014, 09:25:04) [GCC 4.8.2] on linux Type "help", "copyright", "credits" or "license" for more information. >>> .. XXX update for new releases 输入多行结构时需è¦ä»Žå±žæ示符了,例如,下é¢è¿™ä¸ª `if`_ è¯å¥:: >>> the_world_is_flat = 1 >>> if the_world_is_flat: ... print("Be careful not to fall off!") ... Be careful not to fall off! 关于交互模å¼æ›´å¤šçš„内容,请å‚è§ :ref:`tut-interac`。 .. _tut-interp: 解释器åŠå…¶çŽ¯å¢ƒ =================================== .. _tut-source-encoding: æºç¨‹åºç¼–ç -------------------- 默认情况下,Python æºæ–‡ä»¶æ˜¯ UTF-8 ç¼–ç 。在æ¤ç¼–ç 下,全世界大多数è¯è¨€çš„å—符å¯ä»¥åŒæ—¶ç”¨åœ¨å—符串ã€æ ‡è¯†ç¬¦å’Œæ³¨é‡Šä¸ — 尽管 Python æ ‡å‡†åº“ä»…ä½¿ç”¨ ASCII å—符åšä¸ºæ ‡è¯†ç¬¦ï¼Œè¿™åªæ˜¯ä»»ä½•å¯ç§»æ¤ä»£ç 应该éµå®ˆçš„约定。如果è¦æ£ç¡®çš„显示所有的å—ç¬¦ï¼Œä½ çš„ç¼–è¾‘å™¨å¿…é¡»èƒ½è¯†åˆ«å‡ºæ–‡ä»¶æ˜¯ UTF-8 ç¼–ç ,并且它使用的å—体能支æŒæ–‡ä»¶ä¸æ‰€æœ‰çš„å—符。 ä½ ä¹Ÿå¯ä»¥ä¸ºæºæ–‡ä»¶æŒ‡å®šä¸åŒçš„å—符编ç 。为æ¤ï¼Œåœ¨ ``#!`` 行(首行)åŽæ’入至少一行特殊的注释行æ¥å®šä¹‰æºæ–‡ä»¶çš„ç¼–ç :: # -*- coding: encoding -*- 通过æ¤å£°æ˜Žï¼Œæºæ–‡ä»¶ä¸æ‰€æœ‰çš„东西都会被当åšç”¨ *encoding* 指代的 UTF-8 ç¼–ç 对待。在 Python 库å‚考手册 `codecs`_ 一节ä¸ä½ å¯ä»¥æ‰¾åˆ°ä¸€å¼ å¯ç”¨çš„ç¼–ç 列表。 ä¾‹å¦‚ï¼Œå¦‚æžœä½ çš„ç¼–è¾‘å™¨ä¸æ”¯æŒ UTF-8 ç¼–ç 的文件,但支æŒåƒ Windows-1252 的其他一些编ç ï¼Œä½ å¯ä»¥å®šä¹‰:: # -*- coding: cp-1252 -*- è¿™æ ·å°±å¯ä»¥åœ¨æºæ–‡ä»¶ä¸ä½¿ç”¨ Windows-1252 å—符集ä¸çš„所有å—符了。这个特殊的编ç 注释必须在文件ä¸çš„ *第一或第二* 行定义。 .. rubric:: Footnotes .. [#] 在 Unix 系统上,Python 3.X 解释器默认未被安装æˆå为 ``python`` 的命令,所以它ä¸ä¼šä¸ŽåŒæ—¶å®‰è£…在系统ä¸çš„ Python 2.x 命令冲çªã€‚ .. _-c: https://docs.python.org/3/using/cmdline.html#cmdoption-c .. _-i: https://docs.python.org/3/using/cmdline.html#cmdoption-i .. _-m: https://docs.python.org/3/using/cmdline.html#cmdoption-m .. _if: https://docs.python.org/3/reference/compound_stmts.html#if .. _codecs: https://docs.python.org/3/library/codecs.html#module-codecs