设为首页 收藏本站
查看: 1112|回复: 0

[经验分享] Python3.3官方教程中文翻译2:使用Python解释器

[复制链接]

尚未签到

发表于 2015-4-27 11:44:10 | 显示全部楼层 |阅读模式
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 站点——站点配置方法)获得更多信息。  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-61197-1-1.html 上篇帖子: python cgi 下篇帖子: Python网页抓取程序(续)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表