argv python 提示输入_Python解释器

一、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 命令来启动它。

0753abad6e7813c5e4bb0433702876de.png

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

eb26928782d17aa408c83c875ed670a7.png

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

例如,下面这个 if 语句:

b83d8fa3db609aa00667975ef444e95b.png

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

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

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

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

b64f4b38e9e6dd29f550c56ff4615501.png

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

8125b1dc05e7d1a195e3399a84a7634d.png

ef94f7074426f81b7372b25b1cf9cd0e.png

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

6007890d34db0d2404eb9964949f4487.png

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

69b250ed178e9466dd44ce8372f4f13c.png

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

060bbed7d55f3c3dbdbf777efc19439b.png

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

5ea3a8551f60b10c5eb2be8958ea93de.png

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

9d5e47de646123028ddba6a52d36ccaa.png

调用解释器时,脚本名和附加参数会传入到一个名为 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 中,供脚本命令操作。

87cbb31fc21e6777ccd3ed41771de99b.png

60362d208c8d869fc76c0f6e41df21bf.png

Python命令选项:

afbc91c563e034da160a7fed3ea13ff7.png

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

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

668459e702e1f8f0d0b09a895d7e018f.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高阶篇:8.1)开模前评审及提交资料;

本章目的:明确开模前需要提交的资料,确保开模一次性成功。 在现有机械行业制作技术的大环境下,除却必要的机加工零件之外,大部分的零件量产都需要开模制作。如塑胶、钣金、压铸、粉末冶金、锻造等。 但是模具是很贵的(…

Android系统充电系统介绍-预防手机充电爆炸

1、锂电池介绍锂离子电池由日本索尼公司于1990年最先开发成功。它是把锂离子嵌入碳(石油焦炭和石墨)中形成负极(传统锂电池用锂或锂合金作负极)。正极材料常用LixCoO2 ,也用 LixNiO2 ,和LixMnO4 ,电解液用L…

Linux物理内存初始化

背景Read the fucking source code! --By 鲁迅A picture is worth a thousand words. --By 高尔基说明:Kernel版本:4.14ARM64处理器,Contex-A53,双核使用工具:Source Insight 3.5, Visio1. 介绍让我们思考…

mysql中%3c%3e和=_Grafana+Prometheus 监控 MySQL

架构图环境IP环境需装软件192.168.0.237mysql-5.7.20node_exporter-0.15.2.linux-amd64.tar.gzmysqld_exporter-0.10.0.linux-amd64.tar.gz192.168.0.248grafanaprometheusprometheus-2.1.0.linux-amd64.tar.gznode_exporter-0.15.2.linux-amd64.tar.gzgrafana-4.6.3.linux-x64…

Linux CentOS7.0 (01)在Vmvare Workstation上 安装配置

一、新建虚拟机 1、创建新的虚拟机 -》 默认典型 -》选择安装介质 2、指定虚拟机名称、安装目录、磁盘容量大小 点击 “完成”,创建虚拟机! 随后虚拟机将自动启动安装过程。 二、安装linux 1、选择 English、English(United States&#xff0…

i=1,为什么 (++i)+(++i)=6?

源码#include "stdio.h"int main(void) {int i 1;printf("%d\n",(i) (i));return 0; }执行weiqifabsp-ubuntu1804:~/c/undif$ gcc g.c && ./a.out 6 weiqifabsp-ubuntu1804:~/c/undif$为什么出现这个鬼现象?原因很简单,C语…

Android-HIDL实例解析

HIDL 简介“HAL interface definition language or HIDL (pronounced “hide-l”) is an interface description language (IDL) to specify the interface between a HAL and its users. It allows specifying types and method calls, collected into interfaces and package…

子矩阵(NOIP2014 普及组第四题)

描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与 列的相对顺序)被称为原矩阵的一个子矩阵。 例如,下面左图中选取第 2、4 行和第 2、4、5 列交叉位置的元素得到一个 2*3 …

linux spinlock/rwlock/seqlock原理剖析(基于ARM64)

背景Kernel版本:4.14ARM64处理器,Contex-A53,双核使用工具:Source Insight 3.5, Visio1. 概述吹起并发机制研究的进攻号角了!作为第一篇文章,应该提纲挈领的介绍下并发。什么是并发,…

爸爸都老了

今天是父亲节,早上韦泽楠去上绘画课,我睡了个回笼觉,一觉睡到了十一点。起来的时候老婆买了新鲜的荔枝和龙眼,当然我没有马上吃,我不是一个随便的男人,我刷了牙,洗了脸,再回到客厅慢…

java输出日志_java代码中如何正确使用loggger日志输出

java代码中如何正确使用loggger日志输出发布时间:2019-06-28作者:spider阅读(2980)当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。使用slf4…

大学的多级放大电路,你交给老师了吗?

第一章 设计任务1.1项目名称:设计三极管多级音频放大电路本项目的主要内容是设计并实现三极管多级音频放大功能。该电路将所学习的三极管基本放大电路与功率放大电路有机结合。1.2项目设计说明(1)设计任务和要求使用常见的小功率三极管设计一…

第十四节TypeScript 联合类型

1、简介 联合类型可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。 注意:只能赋值指定的类型,如果赋值其它类型就会报错的。 2、创建联合类型的语法格式: Type1|Type2|Type3 实例&a…

Linux进程调度器-基础

背景Read the fucking source code! --By 鲁迅A picture is worth a thousand words. --By 高尔基说明:Kernel版本:4.14ARM64处理器,Contex-A53,双核使用工具:Source Insight 3.5, Visio1. 概述从这篇文章…

每天学习点--------第五天(2017-10-9) 摘要: 常用的集合

今天学习 java.util下面的软件包 包含 collection框架、遗留的coolection类、事件模型、日期和时间设施、国际化和各种工具类&#xff08;字符串标记生成器、随机数生成器和位数组&#xff09; 一、Collenction<.E> 接口 转载于:https://www.cnblogs.com/hanxue112253/p/…

Linux内存,先看这篇文章

内存大小计算我们拿32位系统来举个栗子2^32 ‭4,294,967,296‬ bytes‭4,294,967,296‬ bytes / 1024 ‭4,194,304‬ kbytes4,194,304‬ kbytes / 1024 ‭4,096‬ M‭4,096‬ M /1024 4G物理内存如何分页&#xff1f;分段和分页计算机内存管理的两种方式&#xff0c;这里我…

cloudstack java api_CloudStack API编程指引

前言本文阐述为CloudStack编写新API或者更新已存在API时应遵循的约定和编程指引。参考文档(暂略)介绍当你需要为CS添加新的API时&#xff0c;需要创建一个Request类和Response类(或者在扩展CS API功能时它的API Responese已经定义的情况下重用已经存在的API Response类)。编写C…

在ODM公司要不要跳槽到创业公司

读者朋友提问&#xff1a; 发哥&#xff0c;我现在在手机odm公司做指纹模块做了两三个月&#xff0c;基本天天加班到十点以后&#xff0c;后面要被调到camera团队&#xff0c;但是从这几个月的经历来看&#xff0c;感觉学到的不多&#xff0c;代码都是供应商写的&#xff0c;很…

安卓系统应用启动流程分析

随着移动开发的兴起&#xff0c;安卓系统的重要性愈加突显。本文简要介绍安卓系统上应用启动流程&#xff0c;对于应用开发、系统定制以及性能优化人员来说&#xff0c;熟悉应用启动流程会使得在今后的工作中更加得心应手&#xff0c;做到知其然&#xff0c;知其所以然。本文主…

物联网通信协议全解析

随着物联网设备数量的持续增加&#xff0c;这些设备之间的通信或连接已成为一个重要的思考课题。通信对物联网来说十分常用且关键&#xff0c;无论是近距离无线传输技术还是移动通信技术&#xff0c;都影响着物联网的发展。而在通信中&#xff0c;通信协议尤其重要&#xff0c;…