热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

「学习笔记——Python」Python解释器的使用

2Python解释器的使用TableofContents1调用解释器1.1参数传递1.2交互模式2解释器及其环境2.1错误处理2.2执行Python脚本2.3源

2 Python解释器的使用

Table of Contents

  • 1 调用解释器
    • 1.1 参数传递
    • 1.2 交互模式
  • 2 解释器及其环境
    • 2.1 错误处理
    • 2.2 执行Python脚本
    • 2.3 源代码编码(Source Code Encoding)
    • 2.4 交互式模式的启动文件
    • 2.5 定制模块

1 调用解释器

在Linux里,如果安装过python,在shell下键入python即可启动python解释器

  • 查看版本
    $ python -V
    Python 2.7.3
    
  • 查看位置
    $ which python
    /usr/bin/python
    
  • 进入交互模式
    $ python
    Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
    
  • 交互模式下编辑方式 Linux下Python交互模式的编辑操作和命令行下的一致,Ctrl+p可以调出键入历史,Ctrl+a行首,Ctrl+e行尾
  • 退出交互模式
    $ python
    Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> quit()
    $ 
    
  • 命令行下执行python命令,即用python解释器解释python命令
    $ python -c \'print 1\'
    1
    
  • 命令行下执行python脚本/同时进入交互模式
    $ cat foopy.py
    #! /usr/bin/env python
    
    print 1
    
    $ python foopy.py 
    1
    
    $ python -i foopy.py 
    1
    >>> 
    

1.1 参数传递

在命令行执行脚本时,脚本名称以及后面的参数会以字符串的形式存储在sys模块的argv数组里:

$ python -i foopy.py hi hello
1
>>> import sys
>>> print sys.argv[0]
foopy.py
>>> print sys.argv[1]
hi
>>> print sys.argv[2]
hello
>>> print sys.argv[3]
Traceback (most recent call last):
  File "", line 1, in 
IndexError: list index out of range

1.2 交互模式

前面已经讲过如何进入交互模式,这一节介绍交互模式提示符

  • >>> :提示输入命令
    >>> print "hello"
    hello
    
    
  • … : 提示输入连续内容
    >>> the_world_is_flat = 1
    >>> if the_world_is_flat:
    ...     print "Be carefull not to fall off!"
    ... 
    Be carefull not to fall off!
    

2 解释器及其环境

2.1 错误处理

当出现错误时,解释器会打印出错误信息和栈路径,在交互模式下,会返回提示符 >>> 。 在交互模式下键入Ctrl+c会发出一个键盘中断,回到提示符 >>> 。

>>> if the_world_is_flat:
...     print "Be"
KeyboardInterrupt   #此处是键入 Ctrl+c后出现的
>>> if
KeyboardInterrupt   #此处是键入 Ctrl+c后出现的
>>> 

2.2 执行Python脚本

  • 首先,python 脚本的首行要有
    #! /usr/bin/env python
    
  • 其次,脚本要有执行权限
    $ chmod +x foopy.py
    
  • 然后,就可以执行了
    $ ./foopy.py 
    1
    

2.3 源代码编码(Source Code Encoding)

在Python程序的源代码里,可以使用除ASCLL码外的其它编码方式,如果你的python程序中有中文,例如

#! /usr/bin/env python

currency = "你好"
print currency

运行的结果会是:

  File "./encodingpy.py", line 4
SyntaxError: Non-ASCII character \'\xe4\' in file ./encodingpy.py on line 5, but no encoding declared;
see http://www.python.org/peps/pep-0263.html for details

我们只需要加一个声明,指明编码方式即可

#! /usr/bin/env python
# -*- coding: utf-8 -*-

currency = "你好"
print currency

再运行一次:

$ ./encodingpy.py 
你好

2.4 交互式模式的启动文件

在交互式模式下,如果要使用sys模块下的东西,必须先用import导入sys,如果每次启动都要手工导入,就太麻烦了, 另外我们可能需要使用TAB进行补全,这些都需要配置,所以交互模式有一个类似配置文件的东西,在启动交互模式时, 会先执行里面的命令。方法如下:

首先,写一个配置文件 ~/.python.py

import readline   
import rlcompleter   
readline.parse_and_bind("tab: complete") 

然后设置环境变量,在~/.bashrc下添加

export PYTHONSTARTUP=~/.python.py

重新启动shell后,即可在交互模式下使用Tab键来补全

2.5 定制模块

Python提供了两个hook用于定制Python:sitecustomize 和 usercustomize,首先需要查看site包目录

>>> import site
>>> site.getusersitepackages()
\'/home/minix007/.local/lib/python2.7/site-packages\'

然后就可以在此目录下创建usercustomize.py文件,文件的内容会影响python的每次调用,除非在调用时使用 -s 选项 禁止自动import。sitecustomize以同样的方式工作,通常由系统管理员定制,它在usercustomize之前被导入。


原文链接:http://docs.python.org/2/tutorial/interpreter.html



推荐阅读
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • STM32与FPGA的对比及学习建议
    本文对比了野火STM32F103指南针板和Xilinx的PYNQ-Z2板(ZYNQ-7020),介绍了野火STM32F103指南针板的学习资料和讲解视频的详细程度,建议初学者学习野火的资料。同时,介绍了STM32开发所用的Keil程序和C指针的重要性。对于ZYNQ-7020的开发,提到了其自带的Linux、Ubuntu18.4系统以及使用SD卡烧入镜像的方法。 ... [详细]
  • Linux Shell脚步的格式
    Shell脚步等多个命令的组合,可以做成一个shell文件(1.sh)赋权执行执行命令的方式前两张新的进程中执行,对当前进程不产生影响(cdtmp;pwds ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • tcpdump 4.5.1 crash 深入分析
    tcpdump 4.5.1 crash 深入分析 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
author-avatar
LA_Lam霸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有