- Python 教程
- Python 教程
- Python - 概述
- Python - 历史
- Python - 特性
- Python 与 C++
- Python - Hello World 程序
- Python - 应用领域
- Python 解释器及其模式
- Python - 环境设置
- Python - 虚拟环境
- Python - 基本语法
- Python - 变量
- Python - 数据类型
- Python - 类型转换
- Python - Unicode 系统
- Python - 文字
- Python - 运算符
- Python - 算术运算符
- Python - 比较运算符
- Python - 赋值运算符
- Python - 逻辑运算符
- Python - 按位运算符
- Python - 成员资格运算符
- Python - 身份运算符
- Python - 运算符优先级
- Python - 注释
- Python - 用户输入
- Python - 数字
- Python - 布尔值
- Python 控制语句
- Python - 控制流
- Python - 决策
- Python - if 语句
- Python - if-else 语句
- Python - 嵌套 if 语句
- Python - Match-Case 语句
- Python - 循环
- Python - For 循环
- Python for-else 循环
- Python - While 循环
- Python - break 语句
- Python - Continue 语句
- Python - pass 语句
- Python - 嵌套循环
- Python 函数和模块
- Python - 函数
- Python - 默认参数
- Python - 关键字参数
- Python - 仅关键字参数
- Python - 位置参数
- Python - 仅位置参数
- Python - 任意或可变长度参数
- Python - 变量范围
- Python - 函数注释
- Python - 模块
- Python - 内置函数
- Python 字符串
- Python - 字符串
- Python - 切片字符串
- Python - 修改字符串
- Python - 字符串连接
- Python - 字符串格式化
- Python - 转义字符
- Python - 字符串方法
- Python - 字符串练习
- Python 列表
- Python - 列表
- Python - 访问列表项
- Python - 更改列表项
- Python - 添加列表项
- Python - 删除列表项
- Python - 循环列表
- Python - 列表推导式
- Python - 排序列表
- Python - 复制列表
- Python - 联接列表
- Python - 列表方法
- Python - 列表练习
- Python 元组
- Python - 元组(Tuple )
- Python - 访问元组项
- Python - 更新元组
- Python - 解压缩元组项
- Python - 循环元组
- Python - 联接元组
- Python - 元组方法
- Python - 元组练习
- Python 集
- Python - 集(sets)
- Python - 访问 Set Items
- Python - 添加 Set Items
- Python - 删除 Set Items
- Python - 循环 Set Items
- Python - 联接 Sets
- Python - 复制 Set
- Python - Set 运算符
- Python - Set 方法
- Python - Set 的练习
- Python 字典
- Python - 字典
- Python - 访问字典项
- Python - 更改字典项
- Python - 添加字典项
- Python - 删除字典项
- Python - 字典视图对象
- Python - 循环字典
- Python - 复制字典
- Python - 嵌套字典
- Python - 字典方法
- Python - 字典练习
- Python 数组
- Python - 数组
- Python - 访问数组项
- Python - 添加数组项
- Python - 删除数组项
- Python - 循环数组
- Python - 复制数组
- Python - 反向数组
- Python - 对数组进行排序
- Python - 连接数组
- Python - 数组方法
- Python - 数组练习
- Python 文件处理
- Python - 文件处理
- Python - 写入文件
- Python - 读取文件
- Python - 重命名和删除文件
- Python - 目录
- Python - 文件方法
- Python OS 文件/目录方法
- Python - os.path 方法
- 面向对象编程
- Python - OOP 概念
- Python - 类和对象
- Python - 类属性
- Python - 类方法
- Python - 静态方法
- Python - 构造函数
- Python - 访问修饰符
- Python - 继承
- Python - 多态性
- Python - 方法覆盖
- Python - 方法重载
- Python - 动态绑定
- Python - 动态类型
- Python - 抽象
- Python - 封装
- Python - 接口
- Python - 软件包
- Python - 内部类
- Python - 匿名类和对象
- Python - 单例类
- Python - 包装类
- Python - 枚举
- Python - 反射
- Python 错误和异常
- Python - 语法错误
- Python - 异常处理
- Python - try-except 块
- Python - try-finally 块
- Python - 引发异常
- Python - 异常链接
- Python - 嵌套 try 块
- Python - 用户定义的异常
- Python - 日志记录
- Python - 断言
- Python - 内置异常
- Python 多线程
- Python - 多线程
- Python - 线程生命周期
- Python - 创建线程
- Python - 启动线程
- Python - 联接线程
- Python - 命名线程
- Python - 线程调度
- Python - 线程池
- Python - 主线程
- Python - 线程优先级
- Python - 守护程序线程
- Python - 同步线程
- Python 同步
- Python - 线程间通信
- Python - 线程死锁
- Python - 中断线程
- Python 网络
- Python - 网络编程
- Python - 套接字编程
- Python - URL 处理
- Python - 泛型
- Python 杂项
- Python - 日期和时间
- Python - math 模块
- Python - 迭代器
- Python - 生成器
- Python - 闭包(closures)
- Python - 装饰器( Decorators)
- Python - 递归
- Python - 正则表达式
- Python - PIP
- Python - 数据库访问
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 输出格式
- Python - 性能测量
- Python - 数据压缩
- Python - CGI 编程
- Python - XML 处理
- Python - GUI 编程
- Python - 命令行参数
- Python - 文档字符串
- Python - JSON
- Python - 发送电子邮件
- Python - 更多扩展
- Python - 工具/实用程序
- Python - 图形用户界面
- Python 高级概念
- Python - 抽象基类
- Python - 自定义异常
- Python - 高阶函数
- Python - 对象内部
- Python - 内存管理
- Python - 元类
- Python - 使用 Metaclasses 进行元编程
- Python - 模拟和存根
- Python - 猴子修补
- Python - 信号处理
- Python - 类型提示
- Python - 自动化教程
- Python - 人性化软件包
- Python - 上下文管理器
- Python - 协程
- Python - 描述符
- Python - 诊断和修复内存泄漏
- Python - 不可变数据结构
Python 解释器及其模式
Python 解释器
Python 是一种基于解释器的语言。在 Linux 系统中,Python 的可执行文件安装在 /usr/bin/ 目录中。对于 Windows,可执行文件 (python.exe) 位于安装文件夹(例如 C:\python311)中。
本教程将教您 Python 解释器如何在交互式和脚本化模式下工作。Python 代码通过一次一个语句方法执行。Python 解释器有两个组件。翻译器检查语句的语法。如果发现正确,它将生成一个中间字节码。有一个 Python 虚拟机,然后将字节码转换为本机二进制文件并执行它。下图说明了该机制:
Python 解释器具有交互模式和脚本化模式。
Python 解释器 - 交互模式
当从命令行终端启动而没有任何其他选项时,会出现一个 Python 提示符>>>,并且 Python 解释器按照 REPL(读取、评估、打印、循环)的原则工作。在 Python 提示符前输入的每个命令都会被读取、翻译和执行。典型的交互式会话如下。
>>> price = 100
>>> qty = 5
>>> total = price*qty
>>> total
500
>>> print ("Total = ", total)
Total = 500
要关闭交互式会话,请输入行尾字符(对于 Linux,请输入 ctrl+D,对于 Windows,请输入 ctrl+Z)。您也可以在 Python 提示符前键入 quit(),然后按 Enter 键返回到操作系统提示符。
>>> quit()
$
标准 Python 发行版提供的交互式 shell 没有配备行编辑、历史搜索、自动完成等功能。您可以使用其他高级交互式解释器软件(例如 IPython 和 bpython)来获得其他功能。
Python 解释器 - 脚本模式
与在交互式环境中一次输入和获取一条指令的结果不同,可以将一组指令保存在文本文件中,确保其具有.py扩展名,并使用名称作为 Python 命令的命令行参数。
将以下行另存为 prog.py,使用任何文本编辑器,例如 Linux 上的 vim 或 Windows 上的记事本。
print ("My first program")
price = 100
qty = 5
total = price*qty
print ("Total = ", total)
当我们在 Windows 机器上执行上述程序时,它会产生以下结果:
My first program
Total = 500
请注意,尽管 Python 一次性执行了整个脚本,但在内部它仍然以逐行方式执行。
对于任何基于编译器的语言(如 Java),除非整个代码没有错误,否则源代码不会转换为字节码。另一方面,在 Python 中,语句会一直执行到第一次出现错误为止。
让我们在上面的代码中故意引入一个错误。
print ("My first program")
price = 100
qty = 5
total = prive*qty #Error in this statement
print ("Total = ", total)
请注意拼写错误的变量 prive,而不是 price。尝试像以前一样再次执行脚本 -
My first program
Traceback (most recent call last):
File "C:\Python311\prog.py", line 4, in <module>
total = prive*qty
^^^^^
NameError: name 'prive' is not defined. Did you mean: 'price'?
请注意,将执行错误语句之前的语句,然后出现错误消息。因此,现在很清楚 Python 脚本是以解释方式执行的。
Python 解释器 - 使用 shebang #!
除了如上所述执行 Python 脚本外,脚本本身在 Linux 中也可以是可自执行的,就像 shell 脚本一样。您必须在脚本顶部添加一行 shebang 行。shebang 指示使用哪个可执行文件来解释脚本中的 Python 语句。脚本的第一行以 #!然后是 Python 可执行文件的路径。
修改 prog.py 脚本如下:
#! /usr/bin/python3.11
print ("My first program")
price = 100
qty = 5
total = price*qty
print ("Total = ", total)
要将脚本标记为可自执行,请使用 chmod 命令
$ chmod +x prog.py
您现在可以直接执行脚本,而无需将其用作命令行参数。
$ ./hello.py
交互式 Python - IPython
IPython(代表交互式 Python)是一个增强且强大的 Python 交互式环境,与标准 Python shell 相比,具有许多功能。IPython 最初由 Fernando Perez 于 2001 年开发。
IPython 具有以下重要功能:
- IPython 的对象自检功能,用于在运行时检查对象的属性。
- 事实证明,它的语法高亮在识别关键字、变量等语言元素方面很有用。
- 交互历史记录在内部存储,可以复制。
- 关键字、变量和函数名称的 Tab 自动补全是最重要的功能之一。
- IPython 的 Magic 命令系统对于控制 Python 环境和执行操作系统任务非常有用。
- 它是 Jupyter notebook 和 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]出现在 Output 出现之前。
In [1]: price = 100
In [2]: quantity = 5
In [3]: total = price*quantity
In [4]: total
Out[4]: 500
In [5]:
Tab 自动补全是 IPython 提供的最有用的增强功能之一。当您在对象前面的点后按 Tab 键时,IPython 会弹出适当的方法列表。
IPython 通过将 ? 放在对象前面来提供任何对象的信息(内省)。它包括文档字符串、函数定义和类的构造函数详细信息。例如,要浏览上面定义的字符串对象 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 的魔术功能非常强大。Line magics 允许您在 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 是一个基于 Web 的界面,用于 Python、Julia、R 和许多其他编程环境。对于 Python,它使用 IPython 作为其主要内核。