Python 解释器

Python 解释器

Python是一种基于解释器的语言。在Linux系统中,Python的可执行文件被安装在 /usr/bin/ 目录下。对于Windows系统,可执行文件(python.exe)位于安装文件夹中(例如 C:\python311 )。

本教程将教您 Python解释器的工作方式 在交互模式和脚本模式下。Python代码按照逐条语句的方式执行。Python解释器包含两个组件。翻译器检查语句的语法。如果语法正确,它会生成一个中间的字节码。然后有一个Python虚拟机将字节码转换成本地二进制并执行。下图展示了这个过程的机制:

Python 解释器

Python解释器有交互模式和脚本模式。

Python解释器-交互模式

当从命令行终端启动时,没有任何额外选项,Python提示符 >>> 出现,Python解释器采用 REPL(读取,评估,打印,循环) 的原理工作。在Python提示符前输入的每个命令都会被读取,翻译和执行。一个典型的交互式会话如下。

>>> price = 100
>>> qty = 5
>>> ttl = price*qty
>>> ttl
500
>>> print ("Total = ", ttl)
Total = 500

要关闭交互会话,请输入换行字符(对于Linux来说是ctrl+D,对于Windows来说是ctrl+Z)。你也可以在Python提示符前面输入 quit() ,然后按Enter键返回操作系统提示符。

标准Python发行版附带的交互式shell没有像行编辑、历史搜索、自动补全等功能。你可以使用其他高级交互式解释器软件,比如 IPythonbpython

Python解释器 – 脚本模式

不必像在交互环境中一次输入和获取一条指令的结果,可以将一组指令保存在一个文本文件中,确保它具有 .py 扩展名,并将其作为Python命令的命令行参数。

使用任何文本编辑器(比如Linux上的vim或Windows上的记事本),将以下行保存为 prog.py

print ("My first program")
price = 100
qty = 5
ttl = price*qty
print ("Total = ", ttl)

当我们执行上面的程序时,它将产生以下结果:

C:\Users\Acer>python prog.py
My first program
Total = 500

请注意,尽管Python一次性执行整个脚本,但在内部仍按行执行。

如果是基于编译器的语言,如Java,源代码只有在整个代码没有错误时才会被转换为字节码。而在Python中,语句会一直执行,直到遇到第一个错误。

现在有意在上述代码中引入一个错误。

print ("My first program")
price = 100
qty = 5
ttl = prive*qty #Error in this statement
print ("Total = ", ttl)

请注意拼写错误的变量 私有 而不是 价格 。尝试像以前一样再次执行脚本−

C:\Users\Acer>python prog.py
My first program
Traceback (most recent call last):
  File "C:\Python311\prog.py", line 4, in <module>
   ttl = prive*qty
   ^^^^^
NameError: name 'prive' is not defined. Did you mean: 'price'?

请注意,在错误语句之前执行的语句,然后出现错误消息。因此,现在清楚了Python脚本是以解释方式执行的。

Python解释器 – 使用#!

除了像上面那样执行Python脚本外,脚本本身还可以在Linux中成为可自行执行的脚本,就像一个shell脚本一样。您需要在脚本的顶部添加一行 #! 。shebang指示使用哪个可执行文件来解释脚本中的Python语句。脚本的第一行以 #! 开头,后跟Python可执行文件的路径。

将prog.py脚本修改如下 –

#! /usr/bin/python3.11
print ("My first program")
price = 100
qty = 5
ttl = price*qty
print ("Total = ", ttl)

要将脚本标记为自执行,使用 chmod 命令。

$ chmod +x prog.py

现在您可以直接执行脚本,而无需将其作为命令行参数使用。

$ ./hello.py

交互式Python – IPython

IPython(代表着 交互式Python )是一个增强且强大的Python交互环境,与标准Python shell相比具有许多功能。IPython最初由Fernando Perez于2001年开发。

IPython具有以下重要特点−

  • IPython的对象内省功能可以在运行时检查对象的属性。

  • 它的语法高亮在识别语言元素(如关键字、变量等)方面非常有用。

  • 交互历史记录被内部存储并可复现。

  • 关键字、变量和函数名的Tab补全是其中最重要的功能之一。

  • IPython的魔术命令系统对于控制Python环境和执行操作系统任务非常有用。

  • 它是Jupyter笔记本和Project Jupyter的其他前端工具的主要内核。

使用PIP安装工具安装IPython。

pip3 install ipython

从命令行启动IPython

C:\Users\Acer>ipython
Python 3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934
64 bit (AMD64)] on win32
Type 'copyright', 'credits' or 'license' for more information
IPython 8.4.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]:

与标准解释器中的常规>>>提示不同,您将注意到下面解释的两个主要IPython提示:

  • In[1]出现在任何输入表达式之前。

  • Out[1]出现在输出出现之前。

In [1]: price = 100
In [2]: quantity = 5
In [3]: ttl = price*quantity
In [4]: ttl
Out[4]: 500
In [5]:

Tab自动完成是IPython提供的最有用的功能之一。在对象前面的点号后按下tab键,IPython会弹出相应的方法列表。 IPython通过在对象前面放置”?”来提供任何对象的信息(内省)。它包括文档字符串(docstring)、函数定义和类的构造函数的详细信息。例如,要探索上面定义的字符串对象var,在输入提示符中输入var?即可。

In [5]: var = "Hello World"
In [6]: var?
Type: str
String form: Hello World
Length: 11
Docstring:
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
Create a new string object from the given object. If encoding or
errors is specified, then the object must expose a data buffer
that will be decoded using the given encoding and error handler.
Otherwise, returns the result of object.__str__() (if defined)
or repr(object).
encoding defaults to sys.getdefaultencoding().
errors defaults to 'strict'.

IPython的魔法函数非常强大。行魔法允许您在IPython中运行DOS命令。让我们在IPython控制台内运行 dir 命令

In [8]: !dir *.exe
 Volume in drive F has no label.
 Volume Serial Number is E20D-C4B9

 Directory of F:\Python311

07-02-2023 16:55            103,192 python.exe
07-02-2023 16:55            101,656 pythonw.exe
                2 File(s)    204,848 bytes
                0 Dir(s)  105,260,306,432 bytes free

Jupyter Notebook是Python、Julia、R等编程环境的基于web的界面。对于Python来说,它使用IPython作为主要的内核。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程