从实现方式上看,python是一个名为解释器的软件包。解释器是一种让其他程序运行起来的程序。当编写一段python程序,Pyhton解释器将读取程序,并按照其中的命令执行,得出结果。实际上,解释器是代码与机器的计算机硬件之间的软件逻辑层。Python安装包至少包含一个解释器和一套支持库。

程序执行

从程序员的视角来看,Python程序是一个包含Python语句的文本文件。按照惯例,Python文件是以.py结尾的,这种命名方案在被“导入”时才是必需的,但绝大多数Python文件为了统一都是以.py命名的。

从python视角来看,python内部执行流程:第一步编译成所谓的“字节码”,之后将其转发到所谓的“虚拟机”(PVM)中。

字节码是一种低级的、与平台无关的表现形式,概括地说,Python通过把你的每一条源语句分解为单一步骤来翻译成一组字节码指令,可以提高执行速度。如果Python进程在机器上拥有写入权限,那么它将程序的字节码保存为一个以.py为扩展名的文件。在Python3.2以及之后的版本,Python将.py字节码存储在名为__pycahe__的子目录中,这个子目录位于与源文件相同的路径下。注意源文件的修改和Python版本的变化都会触发新的字节码文件的编译。

一旦程序编译成字节码,之后的字节码发送到通常称为Python虚拟机(PVM)的程序上来执行。PVM是Python运行时的引擎,它时常表现为Python系统的一部分,并且是实际运行脚本的组件。

1 介绍

python是一个面向对象的脚本语言,将面向对象的支持和全面的面向脚本语言的角色融合在一起。

python有如下优点:面向对象,免费,可移植,功能强大(丰富的工具集使python介于传统的脚本语言和系统语言之间,工具集包括动态类型),可混合(能与C\C++写成的库文件混合起来),简单易用。

Cpython是python语言实现的三大方式之一,是原始的、标准的实现方式。Jpython能与java语言集成,是python语言的替代实现方式。Jpython包含的java类可编译python源代码,形成java字节码。第三个实现方式是ironpython,可让python程序能与.net框架和Linux编写Mono编写的应用程序相集成。

py2exe(windows下使用)可生成冻结二进制文件(Frozen Binary),能够将程序的字节码、PVM以及任何程序所需要的python支持文件捆绑成一个单独的可执行的二进制程序。

2、运行Python程序的方式

交互式命令行模式

最简单的运行python程序的办法是在python交互命令行中输入程序,在命令提示符中输入python或者在“运行”的对话框中输入亦或者启动IDLE的主窗口,都可开启一个交互的python会话。按下回车键立即执行。ctrl+z:退出python的shell窗口。ctrl+D退出IDLE GUI和UNIX系统下的Python会话。

>>>print('hello world!')>>>2**8

解释:在python3中,print是一个函数调用,但在python2不是。由于交互式自动打印输入表达式的结果,在这个提示模式下,往往不需要输入“print”。

作用:用于体验语言和测试程序;缺点:在交互模式下输入代码,执行完后会立即消失,是不会保存在一个文件中,所以为了重新运行,不得不从头开始输入。这时,为了保存程序,需要在文件中写入代码,这样的文件通常叫做模块。

使用交互提示模式需要注意以下事项:

  • 不需要在交互式下输入完整的打印语句,而在文件中打印语句是必须的。
  • 在交互提示模式下不需要缩进,否则会出现“SyntaxError”的信息。
  • 留意提示符的变换和复合语句(多行语句)。必须两次按下enter键才能运行一条复合语句,这会多出一条空行。每次只能运行一条语句:必须两次按下enter键才能运行一条循环或者其他的多行语句。这意味着不能在交互中复制并粘贴多行代码,除非这段代码的每条复合语句的后面包含空行。
  • 在shell命令行中,多行语句的第二行需要手动缩进,而在IDLE中,它是自动缩进的。

在IDLE的命令行中快捷键的使用:ALT+P:回滚上一条命令;Alt+N:从头查找命令

windows交互式对话环境中,可以使用方向键重新调用使用过的命令

>>>for x in 'spam':
...    print(x)
...

python脚本

用文本编辑器打开,如IDLE编辑器,Notepad等等。#符号之后是注释,可自成一行或者放在代码的右边。

方法一:IDLE是一个能够编辑、运行、浏览和调试python程序的GUI。它是python3.X\Lib\idlelib中的一个脚本idle.py。打开IDLE后,点击File选择new file,这是出现编辑器窗口,输入代码保存为new3.py。然后点击Run选择Run Module,结果会出现在shell窗口中。或者点击File选择open一个已经存在的文件

# 导入模块
import sys
print(sys.platform)
print(2**100)
x='Spam!'
print(x*8)

方法二:系统命令行:用notepad编辑好的.py文件,在当前目录下按下shift+鼠标右键,选择进入powershell,输入python xx.py。如果想产生pyc文件,可以使用python -m xx命令

  • 如果你的Path没有包含python的目录,并且python和你的脚本文件都没有位于你所工作的目录中,那么这对两者都使用完整路径。
  • 在系统提示模式下使用文件扩展名,但是在导入时不能使用文件扩展名,如import sys。

方法三:直接点击py文件,打开方式选择python.exe,dos终端窗口一闪而过,可在代码后加上input()。局限性:如果在input()之前就有错误,错误信息会显示在窗口中,但也只是一闪而过,所以对input()调用也无济于事。

注意:在window中,还有一个完全阻止弹出DOS终端窗口的方法。以pyw为扩展名的文件只显示由脚本构建的窗口,而不是默认的dos窗口。pyw文件是拥有这种特别的窗口操作行为的py文件,他们常用于python编辑的用户界面,和其他各种技术一起使用,把打印完成的输出和错误保存到文件中。

模块导入和重载

模块:每一个以扩展名py结尾的python源文件。其他文件可以通过导入一个模块读取这个模块的内容。往往更大的程序以多个模块文件的形式出现,其中的一个模块文件被设计为主文件,或叫做顶层文件(就是那个启动之后能够运行整个程序的文件)

同一会话中导入操作只能进行一次,如进入python的shell窗口,输入import new3,会有结果,再次import new3,就没有结果了。

注意:new3文件必须在“pythonX.X”或者“pythonX.X\Lib\site-packages”路径之下。

关于导入的搜索路径设置

技巧1:添加系统PYTHONPATH变量:python模块的搜索路径(用来导入)

技巧2:在pythonX.X下创建文本mypath.pth文件,输入自己设定的搜索路径

也可以在同一会话中再次运行文件,需要调用importlib标准库模块中可用reload函数,该函数在python2中是内置函数,在python3不是。from语句可以直接从一个模块中复制一个名字,reload函数载入并运行文件最新版的代码,获得的参数是一个已经加载(import new3)了的模块对象的名称,返回的是一个python模块的对象,所以多出一行显示。        

reload是不可传递的,重载一个模块的话只会重载该模块,而不能重载该模块所导入的任何模块,因此有时必须reload多个文件。

new4 模块文件中的属性如何载入呢?                                     

方法一:  通过使用一个import语句将模块作为一个整体载入,并使用模块名后跟一个属性名来获取它。

>>> import new4
>>> print(new4.theme1)
The Meaning of life
>>>

方法二:通过from从模块文件中获取变量名

>>> from new4 import theme1
>>> print(theme1)
The Meaning of life
>>>

二者的区别是方法一模块整体载入,采用object.attribute属性引用的方式;方法二from仅复制模块的属性,以便属性成为接收者(theme1)的直接变量(副本),打破模块的名称空间分隔的限制,但这至少会导致在复制的变量上可能会重叠。

一般来说,python程序由多个模块组成,通过import语句连接在一起,每一个模块文件是一个独立的变量包,即命名空间,一个模块文件不能看到其他文件定义的变量名,除非它显式地导入那个文件,所以模块文件在代码文件中起到了最小命名冲突的作用。因为每一个文件都是一个独立完备的命名空间,即使在它们拼写相同的情况下,一个文件中的变量名是不会与另一个文件中的变量冲突的。

>>> import new4
The Meaning of life patriotism persistence
>>> dir(new4)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'theme1', 'theme2', 'theme3']
>>> 

exec运行模块文件

使用exec运行模块文件,而不导入模块函数

exec(open('xxx.py').read())是从交互提示模式启动文件而不必导入以及随后的重载的一种方法,为内置函数调用。exec调用有着类似import的效果,但它技术上不会导入模块,默认情况下,每次以这种方式调用exec的时候,他都重新运行文件。因此exec不需要在文件修改后进行模块重载,它忽略了常规的模块导入逻辑。缺点是由于exec的工作机制像在调用的地方粘贴代码一样,与from一样有当前变量有被覆盖的危险。

注意:open的参数是文件路径,默认是在python3.X文件夹下,任意目录下的文件,可写成像 'D:\\\\programing\\\\python3.8\\\\workplace \\\\ new4.py'形式。

总结:本文主要介绍使用代码交互输入的方式,以不同方式启动保存在文件中的代码:在系统命令行中运行、import和exec,使用像IDLE这样的GUI等。​​​​​​​

IDLE常用快捷键总结:

ALT+P:回滚上一条命令;Alt+N:从头查找命令

ctrl+D退出IDLE GUI。

ctrl+[:多行缩进;ctrl+]:多行后退

alt+3:多行注释

alt+4:取消多行注释

python是如何运行程序的?相关推荐

  1. python监控linux运行程序_python linux监控程序

    Pyinotify – Linux中实时监控文件系统更改 Pyinotify 是一个简单而实用的 Python 模块,它用于通过 inotify 实时监控Linux文件系统的更改.用于在Linux中实 ...

  2. python代码变成运行程序_用Python脚本转换成windows的可执行程序

    下载并运行与你所安装的Python对应的py2exe版本的 installer,这将安装py2exe和相应的例子:这些例子被安装在lib\site-packages\py2exe\samples目录下 ...

  3. python基础教程运行程序_Python入门基础教程:WSGI

    原标题:Python入门基础教程:WSGI WSGI 简介 WSGI 是什么 WSGI 是 Python Web Server Gateway Interface 的缩写,是描述 Web 服务器与 P ...

  4. python 实现 定时运行程序 time、datetime函数

    1.time模块 使用 Python 的 time 模块来实现定时运行. 例如,你可以使用 time.sleep() 函数来让程序暂停一段时间,然后使用 time.time() 函数来获取当前时间戳. ...

  5. python代码变成运行程序_python脚本转化单个exe执行程序

    操作系统平台: Windows Server 2003 R2 Enterprise SP2 X86简体中文版 1.ActivePython-2.7.5.6-win32-x86.msi 2.setupt ...

  6. python监控linux运行程序_如何在linux/tcl/python中监控正在打开或启动的应用程序?...

    我正在尝试构建一个面板应用程序,类似于avant window navigator或UbuntuUnity.在 我的问题是,一旦我用预先定义好的应用程序构建了面板,当应用程序打开或启动时,如何向面板添 ...

  7. python绿色版运行程序_Python打包exe运行程序,分享你的技术成果!

    本文转载于公众号:你想要

  8. autoDL租用服务器运行程序全过程

    autoDL是一个不错的GPU租用平台,最近要跑好多NLP相关的程序,想再租一个配置稍高一点的服务器来使用.这里记录自己配置环境到运行程序的全过程. 个人的邀请连接:AutoDL 文章目录 选择服务器 ...

  9. linux怎么创建python文件_Linux下创建python脚本并运行(入门)

    1.首先定位到一个文件夹,然后使用vim编辑器:vim test.py 就创建了python脚本文件,并且进入编辑状态 2.编辑好之后按Esc切换到命令模式,然后输入:wq 回车就自动保存完成了,然后 ...

最新文章

  1. 邮件被暴力破解邮件网关如何解决
  2. VC MFC界面上显示BMP图片
  3. JSONP的诞生、原理及应用实例
  4. Oracle数据库常用技术
  5. World Token钱包官网骗局模式,是传销吗?
  6. java.net.url 中文乱码,.Net获取URL中文参数值的乱码问题解决方法总结
  7. centos7 访问php页面显示源码_运维干货分享:centos7下源码编译安装php-7.1.5(脚本)...
  8. Linux Socket学习(五)
  9. 程序员简历大曝光,让HR哭笑不得,网友:太老实了!
  10. sql 查询id 逗号拼接_sql查询列进行STUFF()拼接 单引号 逗号_xml path excel
  11. iOS 12.0-12.1.2 完整越狱教程
  12. maven项目中通过idea工具打jar包
  13. 因子分析法(Matlab与SPSS对比)
  14. XGBoost原论文阅读翻译
  15. 色度学:RGB颜色空间与CMYK颜色空间的比较与图示
  16. 安装linux系统时将选择下列哪一个操作,linux操作系统考试试卷
  17. POJ 3054 High Spies 笔记
  18. [bzoj1925][DP]地精部落
  19. 工科生的信仰 ESP32 + HaaS Python 打造HaaS收音机
  20. 【蓝桥】做题笔记及心得总结(基础篇)

热门文章

  1. 项目案例:Flink1.14 SQL实现Window TOPN
  2. 任正非答外媒51问最全版: 美国搞不垮华为,感谢给华为打广告,终端销量每月增长50%...
  3. clover写入efi_[授人以渔] 黑苹果clover kext写入系统与硬盘Clover引导
  4. prometheus常用函数表达式
  5. 九十五、尚硅谷kylin单机版环境——安装flume1.6.0
  6. 平头哥面试——数字IC面试流程整理
  7. 专访 | 泽云智联:我们更看重AI与人的交互易用
  8. 如何快速以管理员身份运行cmd命令符窗口
  9. DragonBoard™ 820c Release - www.deltavision.io
  10. TransparentBlt函数的用法