`
小聂飞
  • 浏览: 17633 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

Python 3.3 教程 - 2 使用Python解释器

 
阅读更多

 原文可参见:http://docs.python.org/3.3/tutorial/interpreter.html

 

 

2.1 调用解释器

 

在Linux/Unix系统下,Python的解释器通常安装在/usr/local/bin/python3.3下。将/usr/local/bin配置到系统Path下,你可以在命令行敲入以下命令来调用它:

 

 

python3.3

 

因为Python的安装目录可以任意选定,所以你最好查一下Python安装的具体位置,然后再进行path的配置。

 

如果是windows机器的话,Python通常会安装在c:\Python33,当然你也可以指定你想安装的地方了。为了将这个路径添加到你的系统路径中,你可以键入以下命令在命令行窗口中:

 

 

set path=%path%;C:\python33

 

 

键入文件结束符(Unix下是Control+D,Window下是Cnotrol+Z)会强制退出解释器。如果这样不生效的话,你也可以在命令行键入:quit() 来退出解释器。

 

解释器的命令编辑功能通常是相当烂的。在Unix系统下,某些人安装解释器的时候可能开启了对GNU readline库的支持,在这种情况下你可以使用到一些优雅的交互式功能或历史命令记录功能。检查命令行编辑功能是否支持的一个办法是当你首先看到Python提示的时候,键入Control+P到命令行中,如果它哔的一声,那说明你有命令行编辑功能。请参考Interactive Input Editing and History Substitution 中对快捷键的介绍。如果没有任何情况发生,或者`P回显了出来,则说明命令行编辑功能是没有被支持的,你将只能苦逼的使用backspace等一些基本的字符操作键了。

 

解释器工作方式有点类似Unix的shell:当依赖于标准输入来执行时,它交互式的读取和执行命令;当依赖于一个文件作为参数或者以文件来作为标准输入时,它读取和执行文件中的脚本。

 

另一种启动解释器的方法是通过: python -c command [arg] ……,该方式是在命令行中执行语句,模拟shell的-c选项。因为Python中的语句经常包含着空格或者其它字符,某些字符对shell来说是特殊的,所以一个很好的习惯就是把执行的语句放到单引号中括起来。

 

一些Python的模块本身就是非常有用的脚本。你可以通过 python -m module [arg] ……来执行模块中的源代码。当然,你得记得住模块的名字才行了。

 

当一个脚本在被使用的时候,有些时候需要先运行脚本然后再进入交互模式,这种应用场景可以在执行脚本之前添加-i选项来实现。

 

2.1.1 参数传递

 

脚本的名字和额外的参数会转换成一个string的列表,然后赋值到sys模块下的argv变量中。你可以通过执行import sys来访问这个列表。该列表的长度至少为1,当没有脚本或者变量给定时,sys.argv[0]是一个空字符串。当脚本的名字通过'-'来给定时(意味着标准输入),sys.argv[0]被设置成'-'。当 -c command被使用时,sys.argv[0]被设置成'-c'。当 -m module被使用时, sys.argv[0]被设置成module的全名。紧跟在-c command或者-m module之后的option并不会有Python解释器来处理,而会保存在sys.argv中交由对应的命令行或者模块来处理。

 

2.1.2 交互模式

 

当命令由一个tty来读取的时候,该解释器可以被认为处于交互模式。(至于什么是tty,我也不知道。。。)在这个模式下,它会用一级提示符来提示可以输入下一个命令,通常该提示符是三个大于符号(>>>)。对于延续行来讲,它采用二级提示符来提示,通常是三个点好(...)。在打印一级提示信息之前,解释器会先打印欢迎信息、版本信息和版权信息:

 

 

$ python3.3
Python 3.3 (default, Sep 24 2012, 09:25:04)
[GCC 4.6.3] 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错误处理

 

当错误发生时,解释器会将错误信息和堆栈信息打印出来。在交互式模式下,解释器将会从一级提示中返回。当错误是来自文件时,在打印出堆栈信息后,它会以一个非零的退出状态返回。(由except和try语句处理的异常并不是该处所说的错误。) 由于一些内部的不一致和一些内存溢出等问题存在,执行程序可能会导致致命性的错误并以一个非0状态值返回。所有的错误信息都被写入到标准的错误流中。执行命令这种普通的输出则会写入到标准的输出中。

 

在一级提示符或者二级提示符下键入中断字符(通常是Control-C或DEL)会取消当前的输入并返回到一级提示符下。在命令执行的时候键入中断字符会触发KeyboardInterrupt异常,如果脚本中有try语句的话,可能会对该异常进行处理。

 

 

2.2.2 可执行的Python脚本

 

在BSD这种Unix系统下,Python脚本可以像shell脚本一样直接运行,通过将下面一行添加到脚本文件的开头:

 

 

#! /usr/bin/env python3.3

 

当然,必须解释器已经在用户的path中哈。其中'#!'必须是这个脚本文件的起始两个字符。在一些平台中,这一行必须要用unx风格的结束符('\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编码,但如果你想你的代码能更好的移植的话,还是使用utf-8吧。为了能正常的现实这些字符,你的编辑器需要能识别utf-8编码,同时还必须有相对应支持的字体。

 

当然,你也可以使用其它的编码格式。你只需要将一个特殊的注释行放在#!声明行之后:

 

 

# -*- coding: encoding -*-

 

 

使用了以上声明之后,该文件将会使用你指定的编码格式来进行编码。Python库可以支持的所有编码格式可以参考:codecs.

 

举个例子,如果你的编辑器不支持utf-8,而想使用其它的编码,比如windows-1252的话,你可以在源文件中添加:

 

 

# -*- coding: cp-1252 -*-

 

注意,该声明必须在源文件中的第一行或者第二行(如果有#!声明的话)。

 

 

2.2.4 互动模式下的启动文件

 

在你使用Python中的交互式模式的时候,你可能需要一些标准的命令在Python解释器每次启动的时候都被执行。你可以通过设置环境变量PYTHONSTARTUP来实现这个功能,该环境变量的值是一个包含你要执行的命令的文件。这有点像Unix shell中的.profile功能。

 

这个文件只会在交互式模式下被读取,在执行脚本的时候并不会读取。该文件的执行和交互式命令的执行在同一个命名空间,所以文件中定义或者引用的对象可以直接被交互式命令所引用。

 

如果你想在当前目录下读取启动文件的话,你可以在全局启动文件中写入类似的代码,比如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提供了切入点来允许你做定制:sitecustomize和usercustomize。在看它如何工作之前,你需要先找到你的user site-package目录。打开Python然后运行一下代码:

 

 

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

 

 

 现在你可以创建一个文件比如usercustomize.py在那个目录下,然后在该文件内做任何你想做的事情。它会影响到在python中所有的调用,除非你使用-s参数来关闭自动导入功能。言外之意是在这里放入的代码,在执行python的时候会被自动导入进去。

 

sitecustomize和usercustomize类似,只是它由电脑的管理员创建在全局的site-package目录,并且在usercustomize之前导入。请参见 site 模块来查看详细信息。

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Pydev for python3.3

    Python 环境搭建 一Python的开发环境IDLE 和 Pydev 这里使用Pydev 和 eclipse...二Python 简介 python程序是由解释器来执行的。通常只要在dos命令窗中输入python命令即可启动解释器; 例如: Dos窗口下输入HelloWorld

    python基础教程 第三版 PDF文档+源码(高清 + 目录)珍藏版

    1.1 交互式解释器 ........................................... 1 1.2 算法是什么 ............................................... 2 1.3 数和表达式 ............................................... 3 1.4 ...

    廖雪峰Pyhton教程3.x版[完整版]

    1.1 Python解释器 8 2 第一个Python程序 9 2.1 使用文本编辑器 10 2.2 输入和输出 14 3 Python基础 17 3.1 数据类型和变量 18 3.2 字符串和编码 25 3.3 使用list和tuple 34 3.4 条件判断 39 3.5 循环 43 3.6 使用...

    homebrew-pythons::beer_mug::snake:一个Hombrew Tap,字面上充满了Python解释器

    :beer_mug: :snake: Python Homebrew Tap:trade_mark: 此仓库包含以下公式: python-2.5 python-2.6 python-2.7 python-3.3 python-3.4 python-3.5 python-3.6 这项工作正在进行中。安装$ brew tap kennethreitz/...

    Python编程入门经典

    21.9 嵌入Jython解释器 484 21.10 处理C-Python和Jython 之间的差异 487 21.11 本章小结 488 21.12 习题 488 第Ⅳ部分 附 录 附录A 习题答案 491 附录B 在线资源 519 附录C Python 3.1的新特性 521 附录D 术语表 527

    Python 核心编程 第二版

     18.3 Python、线程和全局解释器锁   18.4 thread模块   18.5 threading模块   18.6 相关模块   18.7 练习   第19章 图形用户界面编程   19.1 简介   19.2 Tkinter与Python编程 534  19.3...

    Python核心编程第二版

     1.5.1 命令行上的交互式解释器   1.5.2 从命令行启动脚本   1.5.3 集成开发环境   1.5.4 其他的集成开发环境和执行环境   1.6 Python文档   1.7 比较Python(Python与其他语言的比较)   1.8 ...

    Python基础教程(第3版)-201802出版-文字版

    1 1.1 交互式解释器 ........................................... 1 1.2 算法是什么 ............................................... 2 1.3 数和表达式 ............................................... 3 1.4 ...

    Py-Spy: Python程序采样可视化性能分析工具-python

    Py-Spy 适用于 Linux、OSX 和 Windows,并支持分析所有最新版本的 CPython 解释器(版本 2.3-2.7 和 3.3-3.7)。 安装 预构建的二进制轮子可以从 PyPI 安装: pip install py-spy 如果你是 Rust 用户,py-spy 也...

    Python编码风格指南(中文版)

    1. 概述 1.1 Python 语言方面的准则 1.2 Python 编码风格方面...3.7 Python 解释器 3.8 注释 3.9 类 3.10 字符串 3.11 TODO style 3.12 import 分组及顺序 3.13 语句 3.14 访问控制 3.15 命名 3.16 程序入口 3.17 总结

    py-spy:Python程序的采样探查器

    py-spy可在Linux,OSX,Windows和FreeBSD上运行,并支持对所有最新版本的CPython解释器(2.3-2.7和3.3-3.8版)进行性能分析。 安装 可以通过以下方式从PyPI安装预构建的二进制车轮: pip inst

    Python核心编程(第二版).pdf (压缩包分2部分,第二部分)

     1.5.1 命令行上的交互式解释器  . 1.5.2 从命令行启动脚本   1.5.3 集成开发环境   1.5.4 其他的集成开发环境和执行环境   1.6 python文档   1.7 比较python(python与其他语言的比较)   1.8...

    Python核心编程(第二版).pdf (压缩包分2部分,第一部分)

     1.5.1 命令行上的交互式解释器  . 1.5.2 从命令行启动脚本   1.5.3 集成开发环境   1.5.4 其他的集成开发环境和执行环境   1.6 python文档   1.7 比较python(python与其他语言的比较)   1.8...

    python中阶基础

    1.1. 解释器 3 1.2. 编写代码 3 1.3. 执行Python代码 3 1.4. 查看Python自带帮助 3 1.5. 缩进 3 1.6. 代码块 4 1.7. 对象和对象的基本特征 4 1.8. 变量 4 1.9. 对象 4 1.10. 标识符 5 1.11. 逻辑表达式 5 1.12. 语句...

    Python核心编程第二版(ok)

     1.5.1 命令行上的交互式解释器   1.5.2 从命令行启动脚本   1.5.3 集成开发环境   1.5.4 其他的集成开发环境和执行环境   1.6 Python文档   1.7 比较Python(Python与其他语言的比较)   1.8 ...

    利用pyinstaller打包exe文件的基本教程

    PyInstaller可以用来打包python应用程序,打包完的程序就可以在没有安装Python解释器的机器上运行了。PyInstaller支持Python 2.7和Python 3.3+。可以在Windows、Mac OS X和Linux上使用,但是并不是跨平台的,而是说...

    helpy:来自命令行的 Python 内置帮助文档(没有交互式 Python 解释器控制台)

    helpy显示内置 Python 文档,而无需使用交互式 Python 解释器控制台。 按 Python 模块、类、方法、函数或关键字查看文档。 在 cPython 2.6、2.7、3.2、3.3 和 pypy 2.2 (Python 2.7.3) 中测试。 文档来自用于执行...

    python-itanium_demangler:纯 Python Itanium C++ ABI demangler

    安腾拆解器Python Itanium Demangler是用于的纯 Python 解析器。 请注意,不支持 MSVC 重整语言。 这个 demangler 从 mangled 符号生成抽象语法树,可用于直接提取类型信息,而不是必须解释与 demangled 符号对应的 ...

    python cookbook(第3版)

    11.7 在不同的Python解释器之间交互 11.8 实现远程方法调用 11.9 简单的客户端认证 11.10 在网络服务中加入SSL 11.11 进程间传递Socket文件描述符 11.12 理解事件驱动的IO 11.13 发送与接收大型数组 第十二...

    使用 Python 获取 Linux 系统信息的代码

    哪个Python版本? 当我提及Python,所指的就是.../usr/bin/env/python,也就是说,我们想要Python的解释器来执行这些脚本。因此,如果你想你的脚本具有执行性,请使用chmod +x your-script.py, 那么你就可以使用./your-

Global site tag (gtag.js) - Google Analytics