python 解释器

2.2. 解释器及其环境

2.2.1. 错误处理

有错误发生时, 解释器会输出错误信息和栈跟踪. 交互模式下, 它返回到主提示符, 如果从文件输入执行, 它在打印栈跟踪后以非零状态退出. (在 try 语句中抛出并被 except 从句处理的异常不是这里所讲的错误). 一些非常致命的错误会导致非零状态下退出, 这通常由内部问题或内存溢出造成, 所有的错误信息都写入标准错误流; 命令中执行的普通输出写入标准输出.

在主提示符或从属提示符后输入中断符 (通常是 Control-C 或者 DEL) 就会取消当前输入, 回到主提示符. [2] 执行命令时输入一个中断符会抛出一个 KeyboardInterrupt 异常, 它可以被 try 语句截获.

2.2.2. 可执行的 Python 脚本

类 BSD 的 UNIX 系统中, Python 脚本可以像 Shell 脚本那样直接执行, 只要在脚本文件开头加一行文本来声明模式:

#! /usr/bin/env python3.2

(要先确认 Python 解释器存在于用户的 PATH 环境变量中). #! 这两个字符必须是文件的头两个字符. 在某些平台上, 第一行必须以 UNIX 风格的行结束符 ('\n') 结束, 不能用 Windows ('\r\n') 的行结束符. 注意 , '#' 用于 Python 一行注释的开始.

脚本可以用 chmod 命令指定可执行模式或权限:

$ chmod +x myscript.py

在 Windows 系统下, 没有 “可持行模式 (executable mode)” 的概念. Python 安装器会自动地把 .py 后缀的文件与 python.exe 绑定, 因此双击一个 Python 文件, 就可以把它作为脚本来运行. 扩展名也可以是 .pyw, 这时工作台窗口会隐藏不被打开.

2.2.3. 源程序编码

默认情况下, Python 源码文件以 UTF-8 编码. 在这种编码下,世界上大多数语言的字符都可以用于, 字符串常量, 标识符, 以及注释 . 尽管标准库遵循一个所有可移植代码都应遵守的约定: 仅使用 ASCII 字符作为标识符, 这是所有可移植代码都应该遵守的约定.

要正确地显示所有这些字符, 你的编辑器一定要有能力辨认出是 UTF-8 编码, 还要使用一个支持所有文件中字符的字体.

为源文件选择一个另外的编码也是可行的. 为此, 要在 #! 行后面指定一个特殊的注释行, 以定义源码文件的编码:

# -*- coding: encoding -*-

有了这样的声明, 源文件中的所有字符都会被以 encoding 的编码来解读,而非是 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 为你提供两个钩子 (hook) 来定制交互环境: sitecustomize 和 usercustomize. 要知道它如何工作, 你需要先找到你的 user site-package 目录的位置. 打开 Python 并运行这段代码:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.2/site-packages'

现在你可以在那个目录下创建一个名为 usercustomize.py 的文件, 并在里面放置任何你想放的东西. 它将影响到每一次 Python 的调用, 除非使用了 -s 选项来禁用了自动导入功能.

sitecustomize 以同样的方式工作, 但通常由该计算机的管理员在全局 site-packages 目录下创建, 并且在 usercustomize 之前被导入. 参看 site 模块的文档获取更多细节.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值