一、Python解释器

我们编写的Python代码都要放在Python解释器上运行,解释器是代码与计算机硬件之间的软件逻辑层。
当我们在操作系统上安装好Python之后,它就包含了保证Python运行的最小化组件:解释器 和 标准库。根据选用的Python版本的不同,解释器本身可以用C语言实现(Python的官方实现版本)、Java语言实现或者其他的形式。无论使用采用什么版本,编写好的Python程序代码必须放在解释器中运行。

1、Python代码的执行过程

将我们编写好的Python代码放到解释器中运行,此过程主要分为两步,第一步是将源码编译成“字节码”,第二步是将编译好的字节码转发到Python“虚拟机”中运行。当然对于程序员来说,这两步都是隐藏的。

(1)字节码编译

当我们运行Python代码时,Python解释器内部会先通过词法分析器将文件中的每一条代码语句分解为单一步骤,然后编译成字节码的形式。编译只是一个简单的翻译步骤,而且字节码是属于源代码层次范围内的底层代码,是与平台无关的,所以编译好的字节码是可以跨平台运行的。这些字节码可以提高执行速度,比起原始的源代码语句,字节码的运行速度要快很多。
如果Python进程在机器上拥有写入权限,那么它将把编译好的字节码保存为一个以 .pyc 为扩展名的文件。Python这样做是作为一种启动速度的优化,下一次运行程序的时候,如果你在上次保存字节码之后没有修改过源代码,Python将会直接加载 .pyc文件,并跳过编译这个步骤。如果你修改了源代码,下次运行程序时,字节码文件将自动重新创建。

(2)Python虚拟机(PVM)

当源文件编译成字节码,字节码就会发送到Python虚拟机(PVM)上来执行。事实上,PVM就是迭代运行字节码指令的一个大循环,一个接一个的完成操作。从技术上讲,这是Python解释器的最后一步。

相关的性能问题

和C/C++这类完全编译语言相比,Python的工作中没有 “build” 和 “make” 操作,也就是没有将源码编译成可以直接在机器上运行的二进制代码的过程。而且Python解释器中间形成的字节码并不是CPU可以直接运行的二进制代码,PVM仍然需要解释字节码成为二进制码,再交由CPU运行。所以Python代码无法运行的像C/C++一样快。

相关的开发意义

在程序开始执行之前不需要预编译和连接,只需要简单的输入并运行代码即可,这使得开发周期大大缩短。这同样使得Python具有更多的动态语言特性:在运行时,Python程序可以去构建并执行另一个Python程序,而且往往非常的方便。

2、Python 解释器的使用方法

有三种不同的办法来启动Python解释器。最简单的方式就是在命令行中启动Python解释器的交互模式,每次输入一行Python 代码来执行。另外一种方法是使用Python解释器运行Python 的代码文件。最后一种办法就是使用Python的集成开发环境(IDE)运行Python,集成开发环境通常整合了其他的工具,例如集成的调试器、文本编辑器、版本控制工具等。

(1)启动 Python 解释器的交互模式

交互模式根据用户的输入来运行代码并输出相应结果,但是他不会把代码保存到一个文件中。学习Python 的最好方法就是在交互式解释器中练习,在你需要测试一些模块时,交互式解释器也非常有用。

Python 解释器通常被安装在Linux系统中的 /usr/local/bin 或者 /usr/bin 目录下,将安装目录包含进 Linux 的PATH环境变量中,以确保可以直接通过输入 python 命令来启动它。

在Windows环境中,安装完Python环境后生成一个IDLE软件。打开软件我们可以使用类似 Linux Shell 的操作方式交互式的输入Python代码。

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

例如,下面这个 if 语句:

在交互模式下只能输入Python代码,而不能输入系统的命令。你必须运行完一条语句,然后才能输入另一条语句。对于简单语句来说,只要按下Enter键就可以运行输入的语句,对于复合语句,必须多提交一个空行来结束该语句。要告诉交互模式下的解释器已经输入完了多行语句,必须要插入一个空行,也就是说你必须按下Enter键两次,才能运行一条复合语句。

通常你可以在交互式解释器的主窗口中输入一个文件结束符(Linux系统是 Ctrl + D,Windows 系统是 Ctrl + Z)让解释器以 0 状态码退出。或者,你可以通过输入 quit() 命令退出解释器。

(2)使用解释器运行Python文件

Python 解释器有些操作类似 Linux shell,当在shell中直接调用解释器时为交互模式(以stdin作为标准输入),它交互的解释并执行命令;当使用文件名作为参数或以文件作为标准输入调用解释器时,它读取文件并将文件作为脚本执行。

Python 脚本使用扩展名 .py,Linux平台还可以在不明确指定 Python 解释器的情况下,直接运行Python文件。 这种情况下你需要在你的脚本的第一行指定我们所使用的Python解释器的路径:#! /usr/bin/env python。

当然我们需要确保Linux的 env 环境变量的 PATH 变量中包含Python解释器的路径。

注意:在Linux系统中,我们直接执行Python脚本文件时,需要文件对执行用户有执行权限。

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

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

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

调用解释器时,脚本名和附加参数会传入到一个名为 sys.argv 的字符串列表。通过导入 sys模块,执行 sys.argv[0],sys.argv[1]... 获取这个列表中的元素。列表的长度大于等于1,没有给定脚本和参数时,它至少也有一个元素:sys.argv[0] ,此时他为空字符串。
脚本名指定为 '-' (表示标准输入)时, sys.argv[0] 被设定为 '-';使用 -c 指令 时, sys.argv[0] 被设定为 '-c';使用 -m 模块 参数时,sys.argv[0]被设定为指定模块的全名 -c指令 或者 -m 模块 之后的参数不会被 Python 解释器的选项处理机制所截获,而是留在 sys.argv 中,供脚本命令操作。

Python命令选项:

(3)使用 PythonIDE(pycharm)编辑Python文件

Python的IDE使用方式和其他语言并无大的区别,这里我们通常使用pycharm软件在windows系统下开发Python程序。
由于Python是可以跨平台运行的(Python文件直接运行在虚拟机上,不用关心具体硬件和操作系统),所以通常我们在Windows环境下开发的脚本可以直接运行在Linux环境下。对于在Linux环境下开发的大型项目或使用框架开发的项目,可能需要在Linux环境下运行项目而且可能有很多的环境依赖。这时我们甚至可以配置pycharm直接同步服务器端的代码到本地,还可以配置使用服务器端的开发环境,在本地直接执行远端服务器的运行命令,并将远端的运行结果同步回本地。
关于pycharm软件的使用我们会专门出一节教程。

argv python 提示输入_Python解释器相关推荐

  1. python分行输入_python换行输入

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! abcn123n(其中n代表换行) print('abc') print ('1 ...

  2. python分行输入_python输入换行

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! abcn123n(其中n代表换行) print('abc') print ('1 ...

  3. python字符串输入_python如何输入字符串

    字符串是 Python 中最常用的数据类型.我们可以使用引号( ' 或 " )来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如:var1 = 'Hello World!' v ...

  4. python oj 输入_Python写OJ题时输入问题

    # encoding: utf-8 ''' Created on Nov 6th, 2014 @author: Speedcell ''' '''Python的输入是野生字符串,所以要自己转类型 st ...

  5. python教程输入_python怎么输入一个集合

    set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集.差集.并集等. set 语法: class set([iterable]) 参数说明: iterable -- 可 ...

  6. python字符串输入_Python输入字符串的方法和实例代码

    Python怎么输入字符串 首先,要显示字符串,直接 print(字符串) 就可以显示了. 字符串可以用单引号或者双引号,python中没有字符类型. 多个字符串直接连着写,就表示连接,字符串内部的转 ...

  7. python 用户输入_Python中如何让用户输入内容

    在使用python的时候,有时候我们需要和用户进行交互,让用户输入一些内容,然后根据内容在做处理.下面小编就给大家介绍在Python中如何让用户输入内容. 工具/原料 Ubuntu终端 方法/步骤 1 ...

  8. python 自动输入_Python自动输入【新手必学】

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:哈喽哈嘿哈 这篇文章是我的第一篇文章,写的不好的地方,请大家多多指教哈,另 ...

  9. python教程输入_Python教程(2.5)——控制台输入

    写Python程序时,你可能希望用户与程序有所交互.例如你可能希望用户输入一些信息,这样就可以让程序的扩展性提高. 这一节我们来谈一谈Python的控制台输入. 输入字符串 Python提供一个叫做i ...

最新文章

  1. Python爬虫之破解百度翻译--requests案例详解(一)
  2. 《你不可不知的50个建筑学知识》之哥特式建筑
  3. python序列类型-python学习—序列类型、列表、元组
  4. python将列表写入csv_转:Python 将列表数据写入文件(txt, csv, excel)
  5. linux的oracle最低配置,Oracle Linux的系统配置和限制
  6. 图像基本群运算--滤波
  7. P4445 最长回文串
  8. android聊天,存储聊天记录sqlite
  9. TensorFlow2.0(一)--简介与环境搭建
  10. python函数运行没有结果_python之函数
  11. 这个工具太好用了,彻底摆脱了数据IT“天天取数”的噩梦
  12. 机器博弈 (二) 遗憾最小化算法
  13. 如何在python中安装包_如何给python安装包
  14. php学习redis买什么书,redis
  15. 电力电子技术笔记-逆变电路
  16. CNTV CBOX的服务项
  17. python 自动打包pyd
  18. mysql innodb_data_read_Innodb_data_read 与Innodb_data_reads的区别
  19. 通过分析134家企业征信牌照机构可见企业征信备案之难
  20. Oracle Coherence 3.5 读书笔记之3 - 满足性能,可扩展和可用性目标

热门文章

  1. C语言预处理功能——关于字符串化和符号粘贴
  2. “制造商和技术支持商”
  3. 以色列:新发明大幅提高太阳能发电效率
  4. 广义表及其存储方式简介
  5. matlab采样频谱,Matlab对采样数据进行频谱分析
  6. kafka tool 查看指定group下topic的堆积数量_ELK架构下利用Kafka Group实现Logstash的高可用...
  7. python until怎么用_python基础之从认识python到python的使用
  8. python 分类变量xgboost_【转】XGBoost参数调优完全指南(附Python代码)
  9. python的excel库_Python-Excel 模块哪家强?
  10. Flask项目中应用七牛云存储