python解释器的提示符是shell嘛_python第四天:Python3 解释器

Python3 解释器

Linux/Unix的系统上,一般默认的 python 版本为 2.x,我们可以将 python3.x 安装在 /usr/local/python3 目录中。

安装完成后,我们可以将路径 /usr/local/python3/bin 添加到您的 Linux/Unix 操作系统的环境变量中,这样您就可以通过 shell 终端输入下面的命令来启动 Python3 。

$ PATH=$PATH:/usr/local/python3/bin/python3# 设置环境变量$ python3--versionPython3.4.0

在Window系统下你可以通过以下命令来设置Python的环境变量,假设你的Python安装在 C:\Python34 下:

setpath=%path%;C:\python34

交互式编程

我们可以在命令提示符中输入"Python"命令来启动Python解释器:

$ python3

执行以上命令后,出现如下窗口信息:

$ python3Python3.4.0(default,Apr112014,13:05:11)[GCC4.8.2]on linuxType"help","copyright","credits"or"license"formore information.>>>

在 python 提示符中输入以下语句,然后按回车键查看运行效果:

print("Hello, Python!");

以上命令执行结果如下:

Hello,Python!

当键入一个多行结构时,续行是必须的。我们可以看下如下 if 语句:

>>>flag=True>>>ifflag:...print("flag 条件为 True!")...flag条件为True!

脚本式编程

将如下代码拷贝至 hello.py文件中:

print("Hello, Python!");

通过以下命令执行该脚本:

python3 hello.py

输出结果为:

Hello,Python!

在Linux/Unix系统中,你可以在脚本顶部添加以下命令让Python脚本可以像SHELL脚本一样可直接执行:

#! /usr/bin/env python3

然后修改脚本权限,使其有执行权限,命令如下:

$ chmod+x hello.py

执行以下命令:

./hello.py

输出结果为:

Hello,Python!

我们 写一个最简单的python程序。 新建 first.py文件,文件内容如下:

print("First Hello World!")

新建 second.py

importfirstprint("Second Hello World!")

然后我们喜欢执行第二个文件:

python second.py

输出:

First Hello World!

Second Hello World!

python程序的执行过程

这个时候我们会发现生成了一个 pycache 目录; 目录下 有文件first.cpython-35.pyc。

如果python版本是2.x 则会在当前目录直接生成first.pyc。

我们说python是解释型语言 ,那这个pyc是什么文件呢?

按照一般的理解来说,pyc 中的c 应该是compile的意思, 既然是这样,那么python代码是如何被转换成一系列的机器指令呢?

现在我们就好好深究一下这里的因果关系。 其实本质上python和java、C#是一样的,三者的 程序执行原理都可以用两个词概括——虚拟机、字节码。

在python中有一个非常核心的东西——interpreter,当我们在命令行敲入python,当我们在shell中敲入命令python的时候, 目的就是为了激活这个解释器;

当我们执行 python second.py的时候,python解释器立即被激活,然后执行python程序。在pyhton的解释器还要完成一个非常重要的工作——编译.py文件。

python解释器在执行程序的时候,首先就是对文件中的python源代码进行编译,生成一个python的字节码(byte code),然后 将字节码交给python虚拟机,虚拟机则按照顺序一条一条的执行字节码,直到程序执行完。

上面在执行python second.py时,我们发现只有second.py文件生成了pyc文件,原因我们不知道,但是我们可以猜测python在执行的时候,只对需要编译的文件进行编译。

那什么是需要编译的文件呢? 比如说,first.py文件不只被 second.py调用, 还被其他的py文件调用,这个时候,如果把 first.py 进行编译,那下次就直接调用编译后的pyc文件,这样就加快了执行速度。

那么有人就要问了,如果我修改了first.py文件,下次调用first.pyc的时候不就不是最新的代码了吗,对于这个我们并不需要担心。

pyc文件中包含自身创建的时间,在python程序执行的时候,首先会尝试加载pyc文件,在加载的过程中,python会比对py文件和 pyc文件的时间,如果pyc文件时间早于py文件时间,就会重新编译py文件,生成新的pyc文件, 否则就会直接调用py从文件。

python整体架构

了解了python程序的执行过程,那么也应该了解python的整体架构是什么。 python的整体架构可以分为三个主要的部分。

b2057be322d63d012808c8725e2cdd4b20181217071341.png

左边的部分 python提供的大量模块、库 和用户自定义的模块。

中间的部分 python的核心——解释器,也可以叫虚拟机,这里的箭头方向是python运行过程中数据流的方向, Scanner对应词法分析,用来将文件或命令输入的每一行代码切分为一个个的token; Parser对应语法分析,在Scanner的分析结果上进行语法分析,建立抽象语法树(AST); Compiler 则根据建立的AST 生成指令集合——字节码; Code Evaluator 执行字节码文件,所以又被称为虚拟机。

右边的部分 对象/类型、内存分配 和解释器之间的箭头表示两者之间的“使用”关系; 运行时状态与解释器之间的箭头表示“修改”关系。python在执行的过程中会不断的修改当前解释器的所处的状态,在不同的状态之间切换。

python程序文件头部的 #!

#!/usr/bin/env python print("Hello World!")

Shebang 是一个由井号和叹号构成的字符串行(#!), 其出现在文本文件的第一行的前两个字符. 在文件中存在Shebang的情况下, 类Unix操作系统的程序载入器会分析Shebang后的内容, 将这些内容作为解释器指令, 并调用该指令, 并将载有Shebang的文件路径作为该解释器的参数。#!先用于帮助内核找到Python解释器, 但是在导入模块时, 将会被忽略. 因此只有被直接执行的文件中才有必要加入#!.

python2中文件的默认编码为ASCII,在文件中含有中文的时候就会报错,这时,我们需要是设置一下文件的默认编码,如下:

#!/usr/bin/env python

#-*- coding: UTF-8 -*- # 指定python文件编码方式

在python3中,文件的默认编码为UTF-8,已经不存在这个问题。

---

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值