Python入门教程_2. 使用 Python 解释器

2.1. 调用解释器

Python 解释器通常安装在目标机器上的 /usr/local/bin/python3.7 目录下;把 /usr/local/bin 目录放进你的 Unix shell 的搜索路径里,确保它可以通过输入:

python3.7

来启动。 [1] 因为安装路径是可选的,所以也有可能安装在其他位置;你可以与安装 Python 的用户或系统管理员联系。(例如,/usr/local/python 就是一个很常见的选择。)

在 Windows 机器上,Python 通常安装在 C:\Python37 位置,当然你可以在运行安装向导时修改此值。要想把此目录添加到你的 PATH 环境变量中,你可以在 DOS 窗口中输入以下命令:

set path=%path%;C:\python37

通常你可以在主窗口输入一个文件结束符(Unix 系统是 Control-D,Windows 系统是 Control-Z)让解释器以 0 状态码退出。如果那没有作用,你可以通过输入 quit() 命令退出解释器。

Python 解释器具有简单的行编辑功能。在 Unix 系统上,任何 Python 解释器都可能已经添加了 GNU readline 库支持,这样就具备了精巧的交互编辑和历史记录等功能。在 Python 主窗口中输入 Control-P 可能是检查是否支持命令行编辑的最简单的方法。如果发出嘟嘟声(计算机扬声器),则说明你可以使用命令行编辑功能;更多快捷键的介绍请参考 交互式输入行编辑历史回溯。如果没有任何声音,或者显示 ^P 字符,则说明命令行编辑功能不可用;你只能通过退格键从当前行删除已键入的字符并重新输入。
Python 解释器有些操作类似 Unix shell:当使用终端设备(tty)作为标准输入调用时,它交互的解释并执行命令;当使用文件名参数或以文件作为标准输入调用时,它读取文件并将文件作为 脚本 执行。

第二种启动 Python 解释器的方法是 python -c command [arg] ...,这种方法可以在 命令行 执行 Python 语句,类似于 shell 中的 -c 选项。由于 Python 语句通常会包含空格或其他特殊 shell 字符,一般建议将 命令 用单引号包裹起来。

有一些 Python 模块也可以当作脚本使用。你可以使用 python -m module [arg] ... 命令调用它们,这类似在命令行中键入完整的路径名执行 模块 源文件一样。

使用脚本文件时,经常会运行脚本然后进入交互模式。这也可以通过在脚本之前加上 -i 参数来实现。

所有的命令行参数请查阅 命令行和环境相关文档

2.1.1. 参数传递

调用解释器时,脚本名和附加参数传入一个名为 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 中,供脚本命令操作。

2.1.2. 交互模式

从 tty 读取命令时,我们称解释器工作于 交互模式。这种模式下它根据主提示符来执行,主提示符通常标识为三个大于号(>>>);继续的部分被称为 从属提示符,由三个点标识(...)。在第一行之前,解释器打印欢迎信息、版本号和授权提示:

$ python3.7
Python 3.7 (default, Sep 16 2015, 09:25:04)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

输入多行结构时需要从属提示符了,例如,下面这个 if 语句:

>>> the_world_is_flat = True
>>> if the_world_is_flat:
...     print("Be careful not to fall off!")
...
Be careful not to fall off!

关于交互模式更多的内容,请参见 交互模式

2.2. 解释器及其环境

2.2.1. 源程序编码

默认情况下,Python 源文件是 UTF-8 编码。在此编码下,全世界大多数语言的字符可以同时用在字符串、标识符和注释中 —— 尽管 Python 标准库仅使用 ASCII 字符做为标识符,这只是任何可移植代码应该遵守的约定。如果要正确的显示所有的字符,你的编辑器必须能识别出文件是 UTF-8 编码,并且它使用的字体能支持文件中所有的字符。

你也可以为源文件指定不同的字符编码。为此,在 #! 行(首行)后插入至少一行特殊的注释行来定义源文件的编码:

# -*- coding: encoding -*-

通过此声明,源文件中所有的东西都会被当做用 encoding 指代的 UTF-8 编码对待。在 Python 库参考手册 codecs 一节中你可以找到一张可用的编码列表。

例如,如果你的编辑器不支持 UTF-8 编码的文件,但支持像 Windows-1252 的其他一些编码,你可以定义:

# -*- coding: cp1252 -*-

『首行』规则有一个例外情况,当源码的第一行是 UNIX "shebang" line 时,编码声明将出现在第二行,如下:

#!/usr/bin/env python3
# -*- coding: cp1252 -*-

脚注:

| [1] | 在 Unix 系统上,Python 3.X 解释器默认未被安装成名为 python 的命令,所以它不会与同时安装在系统中的 Python 2.x 命令冲突。 |

Image placeholder
luchaochaoh
未设置
  0人点赞

没有讨论,发表一下自己的看法吧

推荐文章
Python入门教程_3. Python 简介

在下面的例子中,输入和输出分别由大于号和句号提示符(>>>和...)标注:如果想重现这些例子,就要在解释器的提示符后,输入(提示符后面的)那些不包含提示符的代码行。需要注意的是在练习中遇到的从属提示符

Python入门教程_4. 深入 Python 流程控制

除了刚刚介绍的while语句,Python还有一些在其他语言中常见的控制流语句,并做了一些改动。 4.1.if语句 也许最著名的语句是if语句了。 例如: >>>x=int(input("Please

Python入门教程_1. 开胃菜

如果你在计算机上做大量的工作,最终你会发现你想要可以自动完成一些任务。例如,你可能希望对大量文本文件执行搜索和替换,或者以复杂的方式重命名和重新排列一堆照片文件。又或许你想编写一个小型自定义数据库,或

Python入门教程_5. 数据结构

这个章节将更详细地描述一些你已经了解的内容,并且添加了一些新的内容。 5.1.深入列表对象 List数据类型包含更多的方法,下面是List对象包含的所有方法: list.append(*x*) 将一个

Python入门教程_6. 模块

如果你从Python解释器退出然后再进入它,你所做的定义(函数和变量)都会消失。因此,如果你想写某些更长的程序,你最好使用一个文本编辑器来为解释器准备输入,然后以这个文件作为输入来运行程序。这也被称为

Python入门教程_7. 输入和输出

程序的输出可以有多种形式:我们可以将数据以人类可读的形式打印到屏幕上,或者将其写入到文件中以供后续使用。本章将讨论其中的几种实现方式。 7.1.格式化输出 迄今为止,在Python中存在两种输出值的方

Git教程_2.5 Git 基础 - 远程仓库的使用

远程仓库的使用 为了能在任意Git项目上协作,你需要知道如何管理自己的远程仓库。远程仓库是指托管在因特网或其他网络中的你的项目的版本库。你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写。与

Go编程语言教程_2.0. Go语言中的标识符

在编程语言中,标识符用于标识目的。换句话说,标识符是程序组件的用户定义名称。在Go语言中,标识符可以是变量名称,函数名称,常量,语句标签,程序包名称或类型。 例: packagemain import

Go编程语言教程_2.1. Golang中的关键字

关键字或保留字是用于某些内部过程或表示某些预定义动作的语言中的字。因此,不允许将这些单词用作标识符。这样做会导致编译时错误。 例: //Go程序说明 //使用关键字 packagemain impor

Go编程语言教程_2.2. Go中的数据类型

数据类型指定有效的Go变量可以保存的数据类型。在Go语言中,类型分为以下四类: 基本类型:数字,字符串和布尔值属于此类别。 聚集类型:数组和结构属于此类别。 引用类型:指针,切片,地图,函数和通道属于

Go编程语言教程_2.3. Go 变量

典型的程序使用在执行过程中可能会更改的各种值。例如,该程序对用户输入的值执行一些操作。一个用户输入的值可能与另一用户输入的值不同。因此,这有必要使用变量,因为另一个用户可能不会使用相同的值。当用户输入

Git教程_2.1 Git 基础 - 获取 Git 仓库

假如你只能阅读一章来学习Git,本章就是你的不二选择。本章内容涵盖你在使用Git完成各种工作中将要使用的各种基本命令。在学习完本章之后,你应该能够配置并初始化一个仓库(repository)、开始或停

Git教程_2.2 Git 基础 - 记录每次更新到仓库

记录每次更新到仓库 现在我们手上有了一个真实项目的Git仓库,并从这个仓库中取出了所有文件的工作拷贝。接下来,对这些文件做些修改,在完成了一个阶段的目标之后,提交本次更新到仓库。 请记住,你工作目录下

Git教程_2.3 Git 基础 - 查看提交历史

在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。完成这个任务最简单而又有效的工具是gitlog命令。 接下来的例子会用我专门用于演示的simplegit项目,运行下面的命令获取该项

Git教程_2.4 Git 基础 - 撤消操作

撤消操作 在任何一个阶段,你都有可能想要撤消某些操作。这里,我们将会学习几个撤消你所做修改的基本工具。注意,有些撤消操作是不可逆的。这是在使用Git的过程中,会因为操作失误而导致之前的工作丢失的少有的

Git教程_2.6 Git 基础 - 打标签

打标签 像其他版本控制系统(VCS)一样,Git可以给历史中的某一个提交打上标签,以示重要。比较有代表性的是人们会使用这个功能来标记发布结点(v1.0等等)。在本节中,你将会学习如何列出已有的标签、如

Git教程_2.7 Git 基础 - Git 别名

在我们结束本章Git基础之前,正好有一个小技巧可以使你的Git体验更简单、容易、熟悉:别名。我们不会在之后的章节中引用到或假定你使用过它们,但是你大概应该知道如何使用它们。 Git并不会在你输入部分命

Git教程_2.8 Git 基础 - 总结

总结 现在,你可以完成所有基本的Git本地操作-创建或者克隆一个仓库、做更改、暂存并提交这些更改、浏览你的仓库从创建到现在的所有更改的历史。下一步,本书将介绍Git的杀手级特性:分支模型。

Go语言高级编程_2.1.1 最简CGO程序

2.1快速入门 本节我们将通过一系列由浅入深的小例子来快速掌握CGO的基本用法。 2.1.1最简CGO程序 真实的CGO程序一般都比较复杂。不过我们可以由浅入深,一个最简的CGO程序该是什么样的呢?要

Go语言高级编程_2.2 CGO基础

2.2CGO基础 要使用CGO特性,需要安装C/C++构建工具链,在macOS和Linux下是要安装GCC,在windows下是需要安装MinGW工具。同时需要保证环境变量CGO_ENABLED被设置

Go语言高级编程_2.3 类型转换

2.3类型转换 最初CGO是为了达到方便从Go语言函数调用C语言函数(用C语言实现Go语言声明的函数)以复用C语言资源这一目的而出现的(因为C语言还会涉及回调函数,自然也会涉及到从C语言函数调用Go语

Go语言高级编程_2.4 函数调用

2.4函数调用 函数是C语言编程的核心,通过CGO技术我们不仅仅可以在Go语言中调用C语言函数,也可以将Go语言函数导出为C语言函数。 2.4.1Go调用C函数 对于一个启用CGO特性的程序,CGO会

Go语言高级编程_2.5 内部机制

2.5内部机制 对于刚刚接触CGO用户来说,CGO的很多特性类似魔法。CGO特性主要是通过一个叫cgo的命令行工具来辅助输出Go和C之间的桥接代码。本节我们尝试从生成的代码分析Go语言和C语言函数直接

Go语言高级编程_2.6 实战: 封装qsort

2.6实战:封装qsort qsort快速排序函数是C语言的高阶函数,支持用于自定义排序比较函数,可以对任意类型的数组进行排序。本节我们尝试基于C语言的qsort函数封装一个Go语言版本的qsort函

Go语言高级编程_2.7 CGO内存模型

2.7CGO内存模型 CGO是架接Go语言和C语言的桥梁,它使二者在二进制接口层面实现了互通,但是我们要注意因两种语言的内存模型的差异而可能引起的问题。如果在CGO处理的跨语言函数调用时涉及到了指针的