Python 标准 REPL:快速尝试代码和想法

2023-10-12

Python 标准 shell,或REPL(读取-求值-打印循环),允许您在处理项目或学习语言时交互式运行 Python 代码。该工具在每个 Python 安装中都可用,因此您可以随时使用它。

作为一名 Python 开发人员,您将在 REPL 会话中花费相当一部分编码时间,因为该工具允许您测试新想法、探索和试验新工具和库、重构和调试代码以及​​尝试示例。

在本教程中,您将学习如何:

  • 运行Python标准REPL,或交互式 shell
  • 编写并执行Python代码在互动会议中
  • 迅速地编辑, 调整, 和重用REPL 会话中的代码
  • 得到帮助反省您在交互式会话中的代码
  • 调整标准 REPL 的一些特性
  • 识别标准 REPL缺少功能

您还将了解可用的功能丰富的 REPL,例如闲置的, Python, 蟒蛇, 和蟒蛇.

为了充分利用本教程,您应该熟悉操作系统的命令行或终端。您还应该了解使用的基础知识蟒蛇命令运行您的代码。

免费示例代码: 单击此处下载免费示例代码您将使用它来探索 Python 标准 REPL 的功能。

了解 Python 标准 REPL

在计算机编程中,您会发现两种编程语言:编译的解释的语言。编译型编程语言如CC++将有一个编译器程序,负责将语言的代码翻译成机器码.

该机器代码通常保存到可执行文件中。一旦有了可执行文件,您就可以在任何兼容的计算机系统上运行您的程序,而无需编译器或源代码。

相比之下,像 Python 这样的解释语言需要一个口译员程序。这意味着您需要安装Python解释器才能在计算机上运行Python代码。有些人可能认为此特性是一个缺点,因为它会使您的代码分发过程变得更加困难。

然而,在 Python 中,解释器提供了一个显着的优势,在开发和测试过程中会派上用场。 Python 解释器允许所谓的交互式REPL(读取-求值-打印循环)或 shell,它读取一段代码,对其进行计算,然后循环将结果打印到控制台。

笔记:在本教程中,您将了解CPython标准 REPL,此 Python 发行版的所有安装程序中都提供了该 REPL。如果您还没有 CPython,请查看获取详细说明。

Python解释器可以以两种模式执行Python代码:

  1. 脚本,或程序
  2. 交互的,或 REPL

In 脚本模式,您使用解释器将源文件作为可执行程序运行。在这种情况下,Python 加载文件内容并按照脚本或程序的执行流程逐行运行代码。或者,交互模式是指启动解释器并将其用作运行直接键入的代码的平台。

笔记:Python 这个名字通常用来表示两种不同的事物:语言本身,以及口译员。在本教程中,您将找到明确的术语Python解释器仅在可能出现歧义的情况下。

在本教程中,您将学习如何使用 Python 标准 REPL 交互式运行代码,这使您可以在使用和学习 Python 时尝试想法并测试概念。您准备好仔细研究 Python REPL 了吗?继续阅读!

什么是 Python 的交互式 Shell 或 REPL?

当您以交互模式运行 Python 解释器时,您将打开一个交互式外壳,也称为交互的或一个REPL会议。在这个,你的键盘是输入源,你的屏幕是输出目的地。

笔记:在本教程中,您将找到术语交互式外壳, 互动环节, 口译会议, 和REPL 会话可以互换使用。

输入由 Python 代码组成,解释器将对其进行解析和评估。完成后,解释器会自动在屏幕上显示结果,并且该过程再次作为循环开始。

因此,Python 的 REPL 是一种使用 Python 语言与计算机对话的交互式方式。这就像实时聊天。整个过程称为 REPL,因为它在幕后执行四个步骤:

  1. 阅读您的输入,由 Python 代码组成表达式声明
  2. 评估你的Python代码,它生成一个结果或原因副作用
  3. 印刷任何输出,以便您可以检查代码的结果并立即获得反馈
  4. 循环播放返回第一步继续交互

Python 的这一功能是一个强大的工具,您在 Python 编码冒险中最终会需要它,特别是当您学习该语言或处于开发过程的早期阶段时。这是因为 REPL 提供了多项优势,接下来您将了解这些优势。

为什么使用 Python REPL?

作为一名 Python 程序员,您将花费大量时间在交互模式上。此模式提供了一种尝试想法和代码片段的快速方法。在 REPL 会话中,您可以执行以下部分或全部任务:

  • 探索和学习Python语法
  • 尝试并证明想法, 概念, 和实施
  • 快速评估代码片段
  • 潜入语言行为
  • 编辑和重构您的代码供以后使用脚本模式
  • 执行代码并类型自省
  • 进行互动帮助关于如何使用该语言
  • 运行基本代码调试
  • 探索标准库和第三方模块, 图书馆, 和蜜蜂
  • 检查落实情况, 功能, 和其他物体

显然,作为一名 Python 开发人员,您有很多理由花大量时间在 REPL 会话中,与解释器交互工作。使用 REPL 会话最重要的好处是获得有关代码工作方式的即时反馈。

交互模式是Python最好的特性之一。它允许您实时测试解决方案并尝试该语言。如果您想知道某些东西是如何工作的,那么只需在交互式 shell 中尝试一下即可。

您绝对应该考虑交互式 shell 的强大功能学习工具,特别是如果您以前的编程经验是使用不提供 REPL 的编译语言。

在学习 Python 或探索新功能和概念时,您会注意到 Python 中的许多示例文档、在线教程、手册和课程是从交互式会话中复制和粘贴的。你会因为 REPL 的特性而认出它们提示,您将在运行python命令部分。

掌握了对解释器和 REPL 的介绍后,您就可以开始行动了。在接下来的课程中,您将学习如何开始和结束 Python 交互式会话。

开始和结束 REPL 交互式会话

Python 标准 REPL 在每个 Python 安装中都可用。要启动新的 REPL 或交互式会话,您只需从命令行以交互模式运行 Python 解释器。这个模式会让你进入一个可以执行Python代码的环境。了解输入代码的工作原理基本上是获得即时反馈的一种方式。

在以下部分中,您将学习如何使用以下命令启动新的 Python 交互式 shellpython命令及其一些命令行选项。

您还将了解 Python 交互式 shell 的标准外观和感觉以及它的一些核心特性和功能。最后,您将学习如何终止 Python 交互式会话。

运行python命令

一旦你已安装如果您的计算机上安装了 Python,那么您就可以立即开始从这个神奇的工具中受益。要启动 Python 交互式 shell 或会话,请打开命令行窗口并运行python不带参数的命令:

$ python

该命令使Python进入交互模式。解释器将运行,您将得到如下所示的输出:

>>>
Python 3.11.0 (main, Nov  6 2022, 13:27:29) ... on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

此输出的第一行显示有关当前 Python 版本以及运行解释器的平台的信息。第二行显示一条消息,其中包含命令,您可以运行这些命令来获取有关 Python 的其他一般信息。

最后一行在输出中突出显示,显示主要提示标准 Python 交互式会话或 shell 的一部分。默认情况下,此提示由三个大于号 (>>>),也称为 V 形。其目的是传达解释器已准备好接受输入。

笔记:Python 标准 REPL 不支持语法高亮。但是,在本教程中,您会发现示例是使用语法荧光笔呈现的。请记住此细节,因为在计算机上运行示例时不会出现语法突出显示。

口译员还有一个二次提示用三个点表示(...)。当您输入复合语句或续行时,会出现此提示。您将在以下内容中了解有关此提示的更多信息运行复合语句处理显式和隐式的行延续部分。

将命令行选项传递给python命令

python命令可以采用一堆命令行选项。其中一些在 REPL 会话中工作时可能很有用。在这种情况下最相关的选项之一是-i旗帜。该选项使解释器在运行脚本或使用以下命令执行一段代码后进入交互模式-c选项。

笔记:-c命令行选项允许您快速运行在命令行上作为字符串提供的 Python 语句或表达式。尝试一下命令python -c "print('Hello, World!')"查看此选项的实际效果。

您可以使用-i选项来检查脚本中当前的全局变量或在程序引发异常时检查堆栈跟踪。

要尝试此选项,假设您有以下示例脚本:

# sample.py

def read_data():
    # Read data from a file or database...
    return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

sample = read_data()

def mean(data):
    return sum(data) / len(data)

average = mean(sample)

该脚本读取文件或数据库的一些示例数据,并提供计算数据平均值的函数。

继续使用以下命令运行脚本:

$ python -i sample.py

Once you press Enter, this command runs the code in sample.py and takes you directly to an interactive session. You’ll recognize this session because your screen will present the REPL’s primary prompt (>>>).

从此时起,您可以检查、测试和调试代码sample.py如所须:

>>>
>>> globals()
{
    '__name__': '__main__',
    ...
    'read_data': <function read_data at 0x104dd4860>,
    'sample': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'mean': <function mean at 0x104fe3ec0>,
    'average': 5.5
}

>>> mean([2, 3, 3, 2])
2.5

>>> mean([])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".../sample.py", line 10, in mean
    return sum(data) / len(data)
           ~~~~~~~~~~^~~~~~~~~~~
ZeroDivisionError: division by zero

在这些示例中,您首先调用内置函数全局变量()函数来检查脚本中定义的全局名称。该函数返回一个字典,将名称映射到相应的对象。第二个例子调用mean()使用新的数据样本。

笔记:当您在交互式会话中运行一段代码时,您通常会立即得到屏幕上的反馈作为输出。您将认出代码的输出,因为它没有任何前导提示。

最后的例子调用mean()以空列表作为参数。在这种情况下,该函数会失败并显示ZeroDivisionError因为打电话长度()返回空列表0.

笔记:当您使用-i命令行选项python命令,请记住Python启动环境变量将不会被读取。您将在以下内容中了解有关此环境变量的更多信息提供启动文件部分。

-bflag 是在交互模式下运行 Python 时要考虑的另一个命令行选项。当您运行比较的代码时,此选项会派上用场字节对象,并且您希望在以下情况下收到警告细绳或整数值进入比较中间:

>>>
>>> # Run python with the -b option
>>> b = b"Hello"
>>> s = "Hello"
>>> b == s
<stdin>:1: BytesWarning: Comparison between bytes and string
False

-b第二个示例中的选项使解释器在发现比较操作时显示警告bytes与字符串或int价值观。如果您不使用此选项,则不会显示警告:

>>>
>>> # Run python without the -b option
>>> b = b"Hello"
>>> s = "Hello"
>>> b == s
False

与前面的示例一样,比较返回False因为这些值具有不同的数据类型。然而,在最后一个示例中,您不会收到任何警告来帮助您理解为什么会得到这个结果。

这只是在交互模式下使用 Python 时可能派上用场的选项的示例。有关命令行选项的完整列表,请查看Python 命令行参数.

退出当前的 Python REPL 会话

如果您习惯在命令行或终端上工作,那么您可能不喜欢一直关闭和打开终端窗口。您的常规工作流程可能会执行CLI工具,工作完成后关闭它们,并返回到当前的 shell 会话。

当您在交互模式下使用 Python 时可能会出现这种情况。一旦进入 REPL,您就无法运行正常的 shell 命令,因为您处于不同的环境中。要返回到正常 shell,您需要终止 REPL 会话。

有几种方法可以退出交互式会话。您可以使用以下任一 Python 函数:

  • 辞职()
  • 出口()

这两个函数内置于 Python 中。因此,您可以在交互式会话中随时使用它们。这两个函数都允许您通过隐式引发来退出当前会话系统退出例外。

或者,您可以明确提出SystemExit手动异常,退出代码为0。您将得到相同的结果,并且当前的 REPL 会话将终止。

这些工具中的任何一个都会让您退出当前的 Python 交互式会话,并带您返回操作系统 (OS) shell。之后,您可以再次运行常规 shell 命令。

终止 REPL 会话的另一个选项是使用以下键盘快捷键之一,具体取决于您当前的操作系统:

  • Ctrl+D on Unix systems, such as Linux or macOS
  • Ctrl+Z and then Enter on Windows systems

这些组合键代表文件结束符 (EOF)在相应的操作系统中。它们允许您退出当前的交互式会话,因为解释器在一个名为的特殊文件中运行__main__,您可以通过检查来确认__name__属性:

>>>
>>> __name__
'__main__'

交互式会话中的所有 Python 代码都将包含在__main__文件,该文件运行直到读取到 EOF 字符。这意味着当解释器找到这个字符时,它会立即终止当前的 REPL 会话。

在 REPL 会话中运行代码

到目前为止,您已经了解了什么是 Python REPL 以及为什么 Python 开发人员喜欢它。您还学习了如何使用以下命令启动 REPL 会话python命令及其一些命令行选项。此外,您还了解了如何终止 Python 交互式会话,跳回操作系统 shell。

在以下部分中,您将学习如何在交互式会话中输入和执行 Python 代码。

评估表达式和简单语句

从命令行启动 Python 交互式会话后,您可以立即开始输入并执行 Python 代码。为此,请返回命令行窗口并运行python命令。

When the REPL’s primary prompt (>>>) appears on your screen, type in the following expressions, pressing the Enter key after each of them:

>>>
>>> 5 - 2
3

>>> sum([1, 2, 3, 4])
10

>>> 42 > 7
True

>>> number = 42

>>> 7 / 0
Traceback (most recent call last):
    ...
ZeroDivisionError: division by zero

第一个表达式将两个数字相减并显示结果。第二个表达式是对内置函数的调用和()函数,它采用一系列值和回报它的总和。在第三个示例中,您执行布尔值比较两个数字的表达式。

第四个示例使用赋值语句定义并初始化多变的被称为number。由于赋值不返回任何值,因此 Python 解释器不会在屏幕上显示任何输出。相反,它会立即退回到主提示。最后一个示例展示了当代码出现问题时 Python 如何显示错误。

运行这些示例时,请注意执行每个表达式后解释器如何循环回主提示符(>>>),它可以让您引入新的表达式。现在您已经看到了正在运行的 REPL 周期。 Python 解释器已读取您的表达式,执行它们,并打印其相应的结果,最终循环回到主提示符。

运行复合语句

通过上一节中的示例,您已经执行了简单的陈述在 Python 交互式会话中。这些表达式被称为简单语句,因为它们没有缩进的代码块。

Python也有复合语句, 例如条件句、循环和声明。复合语句需要缩进的代码块。 Python 解释器有一个辅助提示符,可让您输入复合语句的代码块。

考虑以下条件语句示例:

>>>
>>> number = -42

>>> if number < 0:
...     print("negative")
... elif number > 0:
...     print("positive")
... else:
...     print("equal to 0")
...
negative

在此代码片段中,您首先定义一个变量来保存数字。接下来,您开始条件语句。

Once you type the colon character (:) and press Enter, you get three dots (...) on your screen. These dots represent the REPL’s secondary prompt. This prompt on your screen means that you can enter the required indented blocks of your current compound statement.

Note: To break out of the REPL’s secondary prompt, you must press Enter twice. This action will take you back to the primary prompt.

在输入缩进代码块时,请记住标准 REPL 不支持自动缩进:

>>>
>>> if number < 0:
... print("negative")
  File "<stdin>", line 2
    print("negative")
    ^
IndentationError: expected an indented block after 'if' statement on line 1

在Python标准REPL中,您必须提供适当的缩进手动输入您需要输入的任何缩进代码块。否则,您将得到一个IndentationError,就像上面的例子一样。

处理显式和隐式的行延续

REPL 的辅助提示出现的另一种情况是当你需要使用行延续。当您执行以下操作时,会发生续行显式加入多种的物理线路成一个单一的逻辑线使用反斜杠 (\) 特点:

>>>
>>> number = 42

>>> assert isinstance(number, int) and number > 0, \
...     f"number greater than 0 expected, got: {number}"
...

断言语句执行两项检查number。首先,它使用内置的isinstance()检查值是否为整数的函数数字。然后检查输入值是否大于0。如果这些条件中的任何一个失败,则该语句将引发断言错误以提供的消息作为参数。

当您使用多个物理行来编写由一对括号分隔的表达式时,也会发生行延续,例如,当您定义列表、元组, 或者字典:

>>>
>>> fruits = [
... "apple",
... "banana",
... "orange",
... "grape",
... "lemon",
... ]

>>> inventory = {
... "mouse": 120,
... "keyboard": 50,
... "laptop": 200,
... "headphones": 240,
... }

Once you open a bracket, such as [], (), or {}, and press Enter, you get the REPL’s secondary prompt. This is known as implicit line joining.

您还可以在其他上下文中使用隐式行连接,例如数学和布尔值表达式,功能定义和调用,列表推导式, 和生成器表达式。简而言之,隐式续行将出现在所有接受某种类型的括号的 Python 结构中,包括[], (), 或者{}.

打印与评估

当您以交互模式运行 Python 时,您会注意到解释器立即显示评估或执行任何表达式或语句的结果值。对于生成返回值的所有语句和表达式都是如此。

对于不生成返回值的语句,解释器不会显示任何内容。正如您已经了解到的,赋值语句就是这种情况。

Python 解释器之所以如此,是因为它的主要目标是提供有关代码工作方式的即时反馈。这种行为使得使用内置打印()当你进行交互工作时,这个功能几乎是不必要的。

然而,至少有一个用例print()在 REPL 会话中。你需要使用print()当您想要显示可以或将要返回的表达式或语句的结果时没有任何.

例如,一些 Python 初学者在开始学习列表时犯的一个常见错误是期望从调用中获得新列表列出方法, 例如。附加(), 。种类(),等等:

>>>
>>> numbers = [2, 4, 1, 3]

>>> numbers.sort()
>>> numbers.append(5)

由于这些方法调用不会向屏幕发出任何输出,因此它们看起来似乎没有执行任何实际操作。然而,他们做到了。

大多数列表方法都会运行其预期的转换或计算到位。换句话说,列表方法通常会修改底层列表对象,而不是创建新的列表对象。因此,大多数列表方法都会返回None,REPL 自动忽略它。结果,屏幕上什么也没有显示。

如果您需要显示None在 REPL 会话中,那么您必须使用print()功能:

>>>
>>> print(numbers.append(6))
None

>>> numbers
[1, 2, 3, 4, 5, 6]

>>> value = None
>>> value
>>> print(value)
None

在此代码片段中,您使用print()显示返回值.append(),即None, 如你看到的。

Note that you can always access the content of a given variable by typing the variable’s name and pressing Enter after it, as you did with numbers. However, if the variable is currently set to None, then you won’t get anything on your screen. You’ll have to use print(), as you did with value.

标记和理解错误

当 REPL 会话发生错误时,解释器会自动打印相应的错误消息并追溯。然后,它循环回到 REPL 的主提示符。在以下示例中,您将看到此行为的实际效果:

>>>
>>> greeting = "Hello, World!
  File "<stdin>", line 1
    greeting = "Hello, World!
               ^
SyntaxError: unterminated string literal (detected at line 1)

>>> 42 / 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

>>> sum()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sum() takes at least 1 positional argument (0 given)

在第一个示例中,字符串文字未正确用双引号 (")。这就提出了一个语法错误。第二个例子提出了一个ZeroDivisionError例外,因为你试图划分42经过0。在最后一个示例中,您调用内置函数sum()不带参数的函数,这会引发TypeError.

所有这些错误都会立即打印在屏幕上。此行为使您可以快速、仔细地检查错误消息和回溯,以便跟踪根本问题并修复代码。

使用_特殊变量

每次运行返回值的语句时,解释器都会在内部将该值存储在一个用单个下划线命名的特殊变量中(_)。您可以像 Python 中的任何其他变量一样访问和使用该变量。

这里有几个例子显示了隐含的_使用表达式时变量的作用:

>>>
>>> 42 < 7
False
>>> _
False

>>> 12 + 30
42
>>> _
42

在这些示例中,您正在评估表达式。表达式总是有一个返回值,该值会自动分配给_每次都有变化。

当涉及到函数调用时,如果目标函数返回的值不同于没有任何, 然后_将保持该值。相反,如果函数返回None,那么_变量将保留前面操作的值:

>>>
>>> pow(4, 2)
16
>>> _
16

>>> print("Hello, World!")
Hello, World!
>>> _
16

内置的战俘()函数计算一个数字给定指数的幂,并返回结果。因为函数的结果不同于None, 这_变量会自动重新分配。相反,如果您调用一个返回的函数None, 喜欢print(),那么_变量保持不变。

在下面的示例中,您使用赋值语句创建并初始化counter多变的:

>>>
>>> counter = 0
>>> _
16

>>> counter
0
>>> _
0

赋值不会返回任何值。相反,它们存储对变量中值的引用。在这种情况下,_运行该语句后变量不会更新。这就是为什么变量仍然包含数字16从前面的例子来看。

请注意,在交互式会话中访问变量会返回该变量引用的值。在这种情况下,该值也被分配给_多变的。

因为_是一个常规的Python变量,你可以在表达式和语句中使用它:

>>>
>>> numbers = [1, 2, 3, 4]

>>> len(numbers)
4

>>> sum(numbers) / _
2.5

在此示例中,您首先创建一个值列表。然后你打电话长度()获取列表中值的数量。 Python 自动将该值存储在_多变的。最后,你使用_计算值列表的平均值。

当使用_REPL 会话中的变量,请记住该变量仅出现在交互模式中。如果您在脚本模式下运行代码,则不会出现这种隐式行为。

重新加载导入的模块

假设你正在编写一个 Python模块为您的项目之一提供一些功能。同时,您可以在交互模式下使用 Python 来实时测试模块的代码。例如,假设您有以下模块:

# greeting.py

def greet(name="World"):
    print(f"Hello, {name}!")

在此文件中,您定义一个greet()在屏幕上打印问候消息的功能。以下是如何从 REPL 会话加载和使用此代码:

>>>
>>> import greeting

>>> greeting.greet()
'Hello, World!'
>>> greeting.greet("Pythonista")
'Hello, Pythonista!'

现在假设您想向函数添加一个新参数。参数将是一个布尔标志,允许以大写字母打印问候消息。为此,您可以将该函数修改为如下所示:

# greeting.py

def greet(name="World", upper=False):
    greeting = f"Hello, {name}!"
    if upper:
        greeting = greeting.upper()
    print(greeting)

此更新允许您致电greet()upper争论。如果将参数设置为True,则消息将以大写字母显示。现在,您渴望在当前的 REPL 会话中尝试所做的更改。所以,你再次导入模块,希望能够运行新版本的greet()如下:

>>>
>>> import greeting

>>> greeting.greet("Pythonista", upper=True)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
    greeting.greet("Pythonista", upper=True)
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: greet() got an unexpected keyword argument 'upper'

什么?你们有意想不到的争吵吗?为了效率原因,更新某些内容后再次运行导入greeting.py不重新加载模块。当您重新运行导入时,Python 不会再次加载导入的模块。

如果您想在不关闭当前 REPL 会话并打开新会话的情况下解决此问题,那么您可以使用重新加载()函数来自导入库:

>>>
>>> import importlib
>>> importlib.reload(greeting)
<module 'greeting' from '.../greeting.py'>

>>> greeting.greet("Pythonista", upper=True)
HELLO, PYTHONISTA!

现在你的函数可以运行了!这reload()函数已负责加载您的新版本greeting模块。当你在你的模块中工作时,你可以使用这个技巧。代码编辑器并在 REPL 会话中测试您的更改。

现在您已经了解了在 Python 交互式 shell 中输入和执行代码的基础知识,是时候探索和了解标准 REPL 提供的一些编辑功能了。

在标准 REPL 中编辑代码

大多数版本的Python解释器在运行时都支持代码编辑交互的模式。这些编辑功能包括代码历史记录和基本代码完成。如果您通常使用类 Unix 系统,例如 Linux 和 macOS,那么您可能会熟悉其中的一些功能,这些功能存在于重击科恩贝壳。

这些编辑功能是使用GNU 阅读线库,它支持多种有用的编辑样式。

Note: A quick way to check whether you have code editing features available in your current setup is to press Ctrl+P in the REPL’s prompt. This shortcut should show the last code instruction in your history. If nothing happens or ^P appears on the screen, then the code editing features aren’t available. Otherwise, you’re ready to go!

在以下部分中,您将了解在使用标准 REPL 时如何在 Python 交互式会话中使用代码历史记录和代码完成。

代码历史

标准 REPL 记录您在交互模式下工作时键入和运行的所有代码的完整历史记录。该历史记录保存到一个名为.python_history,通常位于您的主目录中。

While in interactive mode, you can browse this history by using the arrow keys on your keyboard. With the Up key, you can go back in history. With Down, you can go forward in history.

Once you find the desired line of code, you can press Enter to confirm your selection and reuse the target instruction:

Note how the code in your REPL’s history immediately becomes available for reuse. To navigate the code history, use the Up and Down keys until you find the desired snippet.

The navigation starts from the end of the history file and goes up. Every time you press the Up key, you jump to the previous line of code in your history.

Once you find the line of code that you want to reuse or modify, press Enter to accept it. Remember that every line in your code history keeps the original indentation that you used when you first typed the code, which is convenient and saves time.

代码完成

The standard REPL provides basic completion capabilities for variable, object, and module names. This feature is automatically enabled when you start an interactive session. To invoke the available code completions, you can type the starting characters of a given name and press the Tab key. This action triggers the completion search.

If the search finds a match, then the name will automatically be completed for you. If the search finds more than one match, then you’ll have to press Tab again to get the entire list of matching names. If nothing appears after pressing Tab twice, then your search didn’t find any result.

代码完成系统在运行搜索时会查看以下对象:

  • Python关键词
  • 内置功能, 班级, 和目的名字
  • 当前定义的名称,例如变量, 功能, 和
  • 进口模块包裹名字

以下是 REPL 代码完成系统在实践中如何工作的示例:

When you type the first character or characters of your target name and press Enter, you get an automatic completion if the REPL finds a unique match. When the completion system finds more than one name that matches your search, you need to press Tab again to get the list of matching names.

You can type a few more characters and press Tab again, or you can just type the complete name or keyword.

当涉及到访问属性时点符号, 像obj.attr,代码补全系统将建议目标对象的属性和方法的补全:

Once you type the name of an object followed by a dot, you can press Tab to quickly inspect the list of attributes and methods of that object. Then you can start typing the name of your target attribute or method and press Tab again for completion.

标准 REPL 提供了一组相当有限的代码编辑功能。但是,当您需要使用交互式会话并且没有更高级的 REPL 时,它们可能非常有用。这些代码编辑功能可以提高您的工作效率并使您的编码体验更加愉快。

有用的键盘快捷键

Leaning useful keyboard shortcuts can significantly boost your productivity and efficiency when you’re working in a REPL session. For example, pressing Ctrl+C on the REPL’s primary or secondary prompt cancels the input and returns to the primary prompt:

>>>
>>> print(
KeyboardInterrupt

>>> if True:
...
KeyboardInterrupt

When you press Ctrl+C on the primary or secondary prompt, the interpreter raises a KeyboardInterrupt exception and immediately returns to the primary prompt.

If you press Ctrl+C while some piece of code is running, then the interpreter raises a KeyboardInterrupt exception, interrupting the code’s execution and returning to the primary prompt.

当您启动一个您不愿意完成的长时间运行的任务或当您意外遇到一个问题时,后一种行为非常有用。无限循环:

>>>
>>> while True:
...     print("Hello!")
...
Hello!
Hello!
Hello!
^CTraceback (most recent call last):
  File "<stdin>", line 2, in <module>
KeyboardInterrupt
Hello!

This example presents an infinite while loop. You can break the loop by pressing Ctrl+C on your keyboard. After this key combination, you’re again back to the primary prompt, and your REPL session is ready for new input.

标准 REPL 提供了许多其他有趣且有用的键盘快捷键。下表显示了其中一些:

Keyboard Shortcut Description
Ctrl+L Clears the screen, reprinting the current line at the top
Ctrl+D Exits the current REPL session
Ctrl+C Raises a KeyboardInterrupt exception and loops back to the primary prompt
Ctrl+B Moves the cursor back one character
Ctrl+F Moves the cursor forward one character
Del or Backspace Deletes the character to the right or left of the cursor, respectively
Ctrl+D Deletes the character underneath the cursor
Ctrl+A Moves the cursor to the start of the line
Ctrl+E Moves the cursor to the end of the line
Ctrl+K Kills, or deletes, the text from the current cursor position to the end of the line
Ctrl+W Kills from the cursor to the previous whitespace

这些键盘快捷键将帮助您在交互式会话中更熟练地键入和编辑代码。您可以在官方文档中找到更多键盘快捷键GNU 阅读线图书馆。

在 REPL 中获取帮助并检查代码

任何编码环境(例如 IDE(或集成开发环境)、编辑器或 REPL)的一个重要功能是可以获得有关使用您正在使用的语言、库和工具的快速帮助和指导。

如果您正在使用标准 REPL,那么您将拥有一些工具,可以让您根据您的需求和特定上下文获得帮助并反思您的代码。

使用Python的内置帮助系统

内置的帮助()函数使您可以访问Python的内置帮助系统。您可以通过两种方式调用该函数来使用它:

  1. 目的或一个细绳作为参数,它使您可以访问该对象的帮助页面
  2. 没有参数,进入Python的帮助系统

对象的帮助页面通常包含对象文档字符串中的信息。它还可能包括方法和属性的列表。例如,这是页面的一个片段str您可以通过键入来访问的类help(str)在您的 REPL 会话中:

>>>
>>> help(str)

Help on class str in module builtins:

class str(object)
 |  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'.
 |
 |  Methods defined here:
 |
 |  __add__(self, value, /)
 |      Return self+value.
 |
 |  __contains__(self, key, /)
 |      Return key in self.
...

In this example, you use the str class object as an argument to help(). This way, you access the class’s help page. You can use the Up and Down keys to move through the page. When you get the desired information, you can press the Q key to exit the help viewer.

如果您使用字符串作为参数help(),然后帮助系统将其作为模块、函数、类、方法、关键字或文档主题的名称进行查找。屏幕上打印相应的帮助页面。通过这种方式调用help()当目标对象在当前中不可用时会派上用场名称空间.

例如,假设您想获得以下方面的帮助:路径库模块,但你还没有导入它。然后你就可以运行help()用字符串"pathlib"作为一个论点。你会得到类似下面的内容:

>>>
>>> help("pathlib")

Help on module pathlib:

NAME
    pathlib

MODULE REFERENCE
    https://docs.python.org/3.11/library/pathlib.html

    The following documentation is automatically generated from the Python
    source files.  It may be incomplete, incorrect or include features that
    are considered implementation detail and may vary between Python
    implementations.  When in doubt, consult the module reference at the
    location listed above.
...

致电给help()"pathlib"作为参数显示模块的帮助页面。请注意,如果您致电help()pathlibname 作为参数,那么你会得到一个NameError因为您还没有将该模块导入到当前的命名空间中。

第二种使用方式help()就是不带参数调用函数。这样就进入了内置帮助系统:

>>>
>>> help()

此调用允许您进入帮助模式。一旦你运行它,你会立即注意到提示符从>>>help>。这个新提示提醒您您正处于交互式帮助模式。

In help mode, you can enter keywords, module names, function names, or any other name. The help system will search for the target name and present the associated documentation page. To try this functionality out, go ahead and type sys on the help> prompt, then press Enter. You’ll get the following page on your screen:

>>>
help> sys

Help on built-in module sys:

NAME
    sys

MODULE REFERENCE
    https://docs.python.org/3.11/library/sys.html

    The following documentation is automatically generated from the Python
    source files.  It may be incomplete, incorrect or include features that
    are considered implementation detail and may vary between Python
    implementations.  When in doubt, consult the module reference at the
    location listed above.
...

Again, to exit the page, you can press the Q key on your keyboard. The help system allows you to search for different topics. Just type the desired topic and press Enter. If the topic has a documentation page, then you’ll get it on your screen. Otherwise, you’ll get an ImportError that’ll bring you back to the primary prompt:

>>>
help> keywords

Here is a list of the Python keywords.  Enter any keyword to get more help.

False               class               from                or
None                continue            global              pass
True                def                 if                  raise
and                 del                 import              return
as                  elif                in                  try
assert              else                is                  while
async               except              lambda              with
await               finally             nonlocal            yield
break               for                 not

help> iterable
Traceback (most recent call last):
    ...
ImportError: No Python documentation found for 'iterable'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.

在此示例中,您首先搜索术语keywords。此搜索查找并显示有关 Python 关键字的页面。然后,您搜索该词iterable。不幸的是,这个主题没有文档页面,所以你会得到一个ImportError这会让您退出帮助系统。

Once you’ve found the required information, then you can exit the help system by typing q or quit and then pressing Enter. This way, you’ll be back to your REPL session.

动态自省你的代码

当您在 REPL 会话中工作时,您可以直接访问一些很酷的 Python 内置工具,您可以使用它们来内省代码并获取有关您正在使用的对象的更多信息和上下文。

其中一些内置工具包括:

Function Description
dir() Returns the list of names in the current local scope when you call it with no argument. Attempts to return a list of valid attributes for the object passed as an argument.
vars() Returns the .__dict__ attribute for a module, class, instance, or any other object with this attribute. The .__dict__ attribute holds a list of names pertaining to the underlying object.
locals() Returns a dictionary representing the names in the current local scope.
globals() Returns the dictionary representing the current module namespace.
type() Returns the type of an object when you call it with one argument.

您可以使用这些内置函数中的任何一个来检查您的代码并检索稍后可以在编码过程中使用的有用信息。

例如,假设您正在使用字典并希望获取此类中所有方法和属性的列表。你可以这样做:

>>>
>>> dir(dict)
['__class__', ..., 'popitem', 'setdefault', 'update', 'values']

此示例中的输出将名称列表显示为字符串。该列表将包括中定义的属性和方法dict班级。您可以将此内置函数与任何 Python 对象一起使用。

vars()函数的工作原理类似于dir()但返回名称-对象对的字典而不是列表。

locals()globals()当您想知道代码中给定范围内定义的名称时,函数也很有用。最后,type()函数可帮助您确定代码中给定对象的数据类型或类。

自定义标准 REPL

Python 解释器允许您在交互模式下自定义其一些行为和功能。要自定义您的 REPL,您可以使用所谓的启动文件,当您启动交互式会话时解释器读取并执行的 Python 文件。

您还可以使用富有的第三方库来自定义您在 REPL 会话中运行的任何代码的输出。

在以下部分中,您将了解如何在使用 Python 标准 REPL 时使用这些工具来增强用户体验的基础知识。

提供启动文件

标准 REPL 接受启动文件,您可以使用该文件来调整某些当前功能或向交互式会话添加新功能。该文件仅在交互式会话中运行。当您使用以下命令执行程序时它不会运行python命令。因此,您不必担心会损坏重要的程序。

启动文件可以包含任何Python代码。此代码将在交互模式下显示第一个提示之前执行。

需要强调的是,启动文件运行在与运行交互式代码相同的命名空间中。因此,在此文件中定义或导入的对象将在您的交互式会话中可用。当您想要加载工具并自定义交互式 shell 的功能时,此行为非常有用。

在使用启动文件做一些很酷的事情之前,您需要学习如何告诉解释器您想要使用哪个文件作为启动文件。您可以通过设置Python启动系统 shell 中的环境变量。

如果您使用的是 Linux 或 macOS,则可以转到主文件夹并打开 shell 的配置文件。打开该文件后,在其末尾添加以下行:

# .bashrc

# ...

export PYTHONSTARTUP=~/.pythonstartup
# .zshrc

# ...

export PYTHONSTARTUP=~/.pythonstartup

每当您启动终端或命令行窗口时,Linux 和 macOS shell 都会自动加载相应的配置文件。这样,您就可以确保PYTHONSTARTUP变量在您的系统上始终可用。

在此示例中,您设置PYTHONSTARTUP变量为~/.pythonstartup,这是目标启动文件的路径。在这种情况下,该文件将位于您的主目录中,其文件名将是.pythonstartup.

请注意,文件名并不重要。您可以将其命名为任何您想要的名称。您还可以将该文件放在您想要的任何目录中。只需确保您的PYTHONSTARTUP环境变量保存正确的文件路径。

如果您使用的是 Windows,请查看配置环境变量部分在Windows 上的 Python 编码环境:设置指南创建系统变量的完整指南。按照说明进行操作并添加PYTHONSTARTUP具有合适路径的系统变量。

一旦你设置了PYTHONSTARTUP变量,继续并在所需的文件夹中创建文件。在文本编辑器中打开文件并准备添加一些代码。要开始使用自定义启动文件,您将首先添加一些导入:

# .pythonstartup

from importlib import reload
from pprint import pp

正如您已经了解到的,reload()函数允许您在修改模块内容时重新加载模块,以便您可以测试更改。在交互式会话中始终使用此功能会很棒。它将防止重复工作并节省您的时间。

pp()函数从印刷品模块允许您打印格式漂亮的数据结构,例如列表和字典。

要尝试这些新增功能,请继续打开新的终端或命令行窗口。然后以交互模式运行Python。到达那里后,运行以下代码:

>>>
>>> pp(globals())
{'__name__': '__main__',
 ...
 '__builtins__': <module 'builtins' (built-in)>,
 'reload': <function reload at 0x101455c60>,
 'pp': <function pp at 0x1014f3380>}

凉爽的!这pp()功能已经可以使用了。注意reload()也显示为当前全局命名空间中的条目。

您可以在 REPL 的启动文件中添加所需的任何导入。这是一种很好且快速的方法,让您在运行交互式会话时可以使用有用的工具。

您在 REPL 的启动文件中进行的另一个有趣的自定义是更改用于标识主要的字符(>>>)和次要(...) 提示。为此,您可以更改系统.ps1系统.ps2变量。

继续将以下代码添加到您的启动文件中:

# .pythonstartup

import sys
from importlib import reload
from pprint import pp

sys.ps1 = "py$ "
sys.ps2 = "py> "

在这种情况下,你告诉口译员使用"py$ "作为主要提示和"py> "作为辅助提示。要尝试这种新的外观和感觉,请启动新的 REPL 会话。你的 shell 看起来像这样:

>>>
py$ numbers = [
py> 1,
py> 2,
py> 3,
py> ]
py$

更改 REPL 的提示可能是一个令人兴奋的探索技巧。然而,在实践中,使用不同的提示可能会让其他查看您屏幕的 Python 开发人员感到困惑。因此,您最好遵循标准提示。

您会发现许多其他有趣的调整和自定义可以添加到 REPL 的启动文件中。不要害羞!当您在交互模式下工作时,请继续尝试以改善您的用户体验和工作效率。

使用 Rich 对 REPL 输出进行着色

丰富的库允许您使用富文本并在终端中进行漂亮的格式化。丰富5.1.0包括突出显示的漂亮印刷。您可以使用此功能对标准 REPL 的输出进行着色。但是,您首先需要pip安装 Rich 从PyPI,Python 包索引,使用以下命令:

$ python -m pip install rich

运行此命令后,您就可以为 REPL 的输出着色了。以下是在交互式会话中执行此操作的方法:

>>>
>>> from rich import pretty, traceback
>>> pretty.install()
>>> traceback.install(show_locals=False)

从现在开始,每次您在当前 REPL 会话中获得输出时,该输出都会被着色和格式化:

Python REPL Colorized Output With Rich

请注意,此添加的功能是暂时的。它仅适用于您运行上述代码的交互式会话。如果您希望每个部分都提供此功能,请使用您的启动文件:

# .pythonstartup

import sys
from importlib import reload
from pprint import pp

try:
    from rich import pretty, traceback
except ModuleNotFoundError:
    pass
else:
    pretty.install()
    traceback.install(show_locals=False)

# ...

通过对 REPL 启动文件的更新,您可以在所有可访问 Rich 库的交互式会话中复制输出着色和格式化行为。这tryexceptelse块保证如果 Rich 在您使用的 Python 环境中不可用,您的启动文件不会抛出错误。

发现标准 REPL 中缺失的功能

与功能齐全的代码编辑器、IDE 或 REPL 相比,标准 REPL 相对较小,并且不提供许多功能来帮助您编码并提高工作效率。这种功能的缺乏可能是由于存在闲置的,它也包含在标准 Python 安装中,并提供功能丰富的 REPL。

以下是标准 REPL 不支持的类似 IDE 功能的非详尽列表:

  • 自动的缩进
  • 语法高亮
  • 上下文代码或命令历史
  • 支架匹配
  • 富有的代码完成和代码建议
  • 动态代码和类型自省
  • 会议分享能力
  • 动态帮助、源代码和文档访问

标准 REPL 是一个很棒的工具,您可以使用它来尝试代码并获得即时反馈。当您无法使用更高级的工具时,它会派上用场。但是,您需要了解其局限性。

在 REPL 会话中使用上面列出的所有功能将改善与 Python 交互时的用户体验。它们会提高您的工作效率并减少代码中的错误和打字错误的数量。

幸运的是,Python 标准 shell 可以轻松扩展和定制。因此,您会发现一些替代 REPL 实现了上述大部分功能以及更多功能。在下一节中,您将了解一些可用于 Python 的替代 REPL。

使用替代 REPL

作为一名 Python 开发人员,您将在交互模式下花费大量编码时间,因为它提供了一个用于测试想法、证明概念和调试代码的出色工具。当您花费大量时间使用给定工具时,您会希望它能够实现一组丰富的功能,通过出色的用户体验让您的生活更加愉快。

CPython 实现包括闲置的,它提供了开箱即用的标准 REPL 的增强替代方案。 IDLE 是一个很棒的工具,您无需安装第三方来源的任何内容即可使用。

不过,在 Python 生态系统中,您会发现其他功能丰富的 REPL。例如,Python已经存在相当长一段时间了。该 REPL 提供代码补全、对象探索、高级历史管理和许多其他功能。该工具在数据科学生态系统中很受欢迎。

另一个增强的 REPL 是蟒蛇,它还提供了一些类似 IDE 的功能,可以极大地提高您的用户体验和工作效率。

蟒蛇REPL 是标准替代品的另一种很好的替代品。它包括语法突出显示、多行编辑、自动完成、鼠标支持等功能。

如果您更喜欢使用在线 REPL,那么您还有一些可用选项:

Online REPL Description
Python.org shell An online interface for the standard REPL, available on the official Python website
Replit An online coding platform that, among other features, allows you to start and use a Python REPL
Python Morsels REPL An online Python REPL that allows you to copy or save your coding session

如果您在 Internet 上进行自己的搜索,那么您会发现其他一些具有不同功能的在线 Python REPL。尝试一下并选择最适合您需求的工具。然后,在下面的评论中告诉你的程序员同事你的经历!

结论

您已经学习了如何使用标准 shell 以交互模式使用 Python,或者REPL(读取-求值-打印循环)。每个 Python 安装中都包含此工具,因此您可以随时使用它来测试新想法、探索和试验新工具和库、重构和调试代码、尝试示例等等。

在本教程中,您学习了如何:

  • 启动Python标准REPL从你的命令行
  • 使用REPL编写并执行Python代码
  • 编辑, 调整, 和重用交互式会话中的代码
  • 访问Python的内置帮助系统反省你的代码
  • 微调Python 标准 REPL 的一些功能
  • 了解 REPL缺少功能

您还了解了替代且功能丰富的 REPL,例如闲置的, Python, 蟒蛇, 和蟒蛇,它提供类似 IDE 的功能,可以在交互模式下工作时极大地提高您的用户体验和工作效率。

免费示例代码: 单击此处下载免费示例代码您将使用它来探索 Python 标准 REPL 的功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 标准 REPL:快速尝试代码和想法 的相关文章

  • Github Copilot连接不上服务器

    现象 报错 ERROR default 2023 09 08T15 47 01 542Z GitHub Copilot could not connect to server Extension activation failed conn
  • 网络安全中的“瑞士军刀” nc

    在入侵中它是最经典的工具之一 NetCat被所有的网络安全爱好者和研究者称之为瑞士军刀 通过名字大家就能知道他的功能足够丰富 nc的全称为NetCat 它能够建立并接受传输控制协议 TCP 和用户数据报协议 UDP 的连接 Netcat可在
  • word 怎么把图片裁剪成圆形

    word 怎么把图片裁剪成圆形
  • 使用OpenAPIKey来调用ChatGPT并解决生成回答控制台显示不全的问题

    使用OpenAPIKey来调用ChatGPT并解决生成回答控制台显示不全的问题 Code import os import openai import re def get ai response prompt engine text da
  • conda与pip

    通过conda info命令查看当前的镜像源 设置conda的镜像源 conda config add channels https mirrors tuna tsinghua edu cn anaconda pkgs free conda
  • 【转】PL/SQL Developer 设置快捷键

    转自 http www cnblogs com SingleCat archive 2010 06 16 1759010 html 1 登录后默认自动选中My Objects 默认情况下 PLSQL Developer登录后 Brower里
  • wireshark 抓取 https

    背景介绍 首先 https双向加密的 如果需要解密数据 除非知道 客户端 服务器 任何一方私钥 否则无法解密 常用手段 基于中间人攻击抓包 使用fiddler 或 charles 实现的是中间人代理 将客户端私钥改为 fiddler 或 c
  • Windows使用技巧

    摘自 这些技巧让你windows用起来很爽 小工具 小技巧 删小广告 重装卸载残留 作者 丶PURSUING 发布时间 2021 03 12 16 09 17 网址 https blog csdn net weixin 44742824 a
  • VM虚拟机提示“vmware tools 的安装无法手动启动,自动安装正在进行中”

    VM虚拟机提示 vmware tools 的安装无法手动启动 自动安装正在进行中 装了个VMWARE虚拟机 但vmware tools总也装不上 提示 vmware tools 的安装无法手动启动 自动安装正在进行中 网上搜索下 解决方法如
  • XNA是什么?

    Software will be the single most important force in digital entertainment over the next decade XNA underscores Microsoft
  • XP下VMware模拟Ubuntu不能使用共享文件夹问题解决vmhgfs

    目前XP下使用VMware workstation 6 0 2虚拟ubuntu后 即使安装了VMware Tools并设置了共享文件夹后 虽然可以看到 mnt hgfs 但仍旧不能访问共享目录的解决方案 问题 主要问题是在安装vmware
  • 浅谈 qmake 之 shadow build

    shadow build shadow build 是什么东西 就是将源码路径和构建路径分开 也就是生成的makefile文件和其他产物都不放到源码路径 以此来保证源码路径的清洁 这不是qmake独创的东西 cmake中早就使用这个东西了
  • 怎样将自己的电脑变成一个服务器(本地服务器)

    你想将自己的电脑变成一个服务器吗 或许你还不知道我们自己的电脑也可摇身一变成为服务器 现在我分享一下把我们的电脑变为服务器的方法 工具 原料 电脑 步骤1 打开 修改电脑相关服务功能 1 1 点击 开始 打开 控制面板 2 2 打开 程序
  • 如何创建Silverlight 项目

    Silverlight Silverlight Tools 您可以使用已经掌握的技术和熟悉的工具创建基于 Silverlight 的应用程序 本主题介绍开发用于 Silverlight 3 的应用程序时可使用的各种工具 本主题包括下列各节
  • Linux安装Phabricator

    背景 公司管理需要 为开发团队寻找一款代码审查工具 最终选择了Phabricator ubuntu14 04 LTS 安装 使用官网上提供的install sh即可 参考链接 https secure phabricator com div
  • 个人sublime配色方案

    文章目录 1 效果图 2 描述文件 1 效果图 2 描述文件 color scheme Packages Color Scheme Default Monokai tmTheme font face Consolas font size 1
  • 安装vmware tools时,kernel版本不匹配问题的解决方法

    安装vmware tools 的时候 提示找不到C header files 此种情况下 按以下步骤操作 1 内核安装完毕后 需要用这个命令确定内核 C header 的安装目录 ls d usr src kernels uname r i
  • Sublime Text 3 插件安装及Vim 模式设置

    Sublime Text 3 1 安装Sublime Text 3 下载安装 http www sublimetext com 3 Package Control安装 https sublime wbond net installation
  • 使用 Tkinter 进行 Python GUI 编程

    目录 Building Your First Python GUI Application With Tkinter 添加小部件 检查你的理解情况 Working With Widgets 使用标签小部件显示文本和图像 使用按钮小部件显示可
  • 在 Python 中使用 len() 函数

    目录 Getting Started With Python s len 将 len 与内置序列一起使用 将 len 与内置集合一起使用 探索 len 与其他内置数据类型 Exploring len Further With Some Ex

随机推荐

  • 2021 年 6 月 16 日

    主持人大卫 阿莫斯回答会员的问题 在这次会议上 我们讨论了 Python 新闻和更新 为什么不能在续行符后发表评论 如何使用括号隐式连接字符串 一些替代的 Python REPL 是什么 如何开始为开源做出贡献 在哪里可以找到 Python
  • 惯用的熊猫:你可能不知道的技巧和功能

    pandas 是一个用于分析 数据处理和数据科学的基础库 这是一个巨大的项目 具有大量的可选性和深度 在本课程中 您将了解如何使用一些较少使用但惯用的 pandas 功能 使您的代码具有更好的可读性 多功能性和速度 包含内容 11 Less
  • 继承和内部原理:Python 中的面向对象编程

    Python 包含编写面向对象代码的机制 其中 数据和对该数据的操作被结构化在一起 这class关键词这就是在 Python 中创建这些结构的方式 类的定义可以是 基于其他类 允许创建层次结构和 促进代码重用 这种机制称为继承 在本课程中
  • 创建“附近商店”视图

    我们的应用程序后端的几乎所有内容都已完成 在本视频中 我们将重点关注前端 以便为用户提供一种查看其位置附近的商店的方法 在本视频中 我们将要做的是在附近的商店应用程序中创建一个 Django 视图 然后通过主 urls py 将用户路由到该
  • 用于近似重复检测的指纹图像

    目录 我们会做什么 什么是图像指纹 哈希 为什么不能使用md5 sha 1等 图像指纹可以用在哪里 我们需要什么库 第 1 步 对数据集进行指纹识别 第 2 步 搜索数据集 结果 改进我们的算法 概括 这是 Adrian Rosebrock
  • Django 和 AJAX 表单提交 – 更多练习

    目录 设置事件处理程序 创建 AJAX 请求 更新 Django 视图 处理回调 更新 DOM 下一步是什么 这是 Real Python 和 Mr 的合作作品 内森 尼科尔斯 于 2014 年 9 月 5 日更新 使应用程序更加 REST
  • 设置您的工作环境

    要下载本课程的数据集 您可以访问真正的 Python GitHub 存储库 有关本课程所涵盖概念的更多信息 您可以查看 Python 虚拟环境 入门 Visual Studio Code 中的 Python 开发 Jupyter Noteb
  • Python 中的字典

    目录 定义字典 访问字典值 字典键与列表索引 增量构建字典 字典键的限制 对字典值的限制 运算符和内置函数 Built in Dictionary Methods d clear d get d items d keys d values
  • 纯Python直方图

    当您准备绘制直方图时 最简单的方法是不要考虑箱 而是报告每个值出现的次数 频率表 一条蟒蛇字典非常适合这项任务 gt gt gt gt gt gt Need not be sorted necessarily gt gt gt a 0 1
  • 了解日期和时间是混乱的

    日期和时间并不是简单的事情 尤其是现在大多数计算都是远程完成的 无法保证计算机和用户位于同一个地方 由于管理夏令时和时区的规则不是静态的 这一事实使情况变得更加复杂 在本课程中 您将探索所有奇怪的边缘情况 并了解程序员通常如何处理它们
  • 掌握Python的内置时间模块

    蟒蛇time模块提供了多种方式代表时间代码中 例如对象 数字和字符串 它还提供除表示时间之外的功能 例如在代码执行期间等待和测量代码的效率 本课程将引导您了解最常用的函数和对象time 完成本课程后 您将能够 理解处理日期和时间的核心概念
  • 关于奥尔德伦·桑托斯

    关于奥尔德伦 桑托斯 个人网站 大家好 我是 Aldren Santos 担任自由平面设计师 插画师已有 3 年了 我的任务是尽我所能 让这个网站变得更加精彩 我真心希望我的插图能够吸引您通过我们团队辛勤工作的这些教程学习 Python 的
  • 编写和测试 Python 函数:面试练习(概述)

    无论您是想在编码面试中取得好成绩 还是只是想提高您的开发技能 解决编码挑战可以帮助您成长为一名程序员 在这个真实的 Python 代码对话中 Philipp 向 Martin 提出挑战 要求他编写一个函数 将字符串中的每个字符加倍 通过他们
  • 引导 Django 项目

    有关本课程所涵盖概念的更多信息 您可以查看 如何设置 Django 项目 真正的Python文章 使用 Django 和 Python 构建个人日记 真正的Python文章 以下是本课程中使用的命令行片段 mkdir portfolio p
  • Python 石头剪刀布:命令行游戏(概述)

    游戏编程是学习如何编程的好方法 您可以使用许多在现实世界中看到的工具 此外您还可以玩游戏来测试您的结果 开始 Python 游戏编程之旅的理想游戏是剪刀石头布 在本课程中 您将学习如何 自己编写代码剪刀石头布游戏 接受用户输入input 使
  • 2021 年 4 月 21 日

    主持人大卫 阿莫斯回答会员的问题 在这次会议上 我们讨论了 Real Python 的新功能 在哪里可以找到要阅读的代码以提高您的 Python 技能 为什么 0xfor x in 1 2 3 回报 15 数据科学 Django 和 Fla
  • Python 中的 K 均值聚类:实用指南

    目录 What Is Clustering 聚类技术概述 分区聚类 层次聚类 基于密度的聚类 How to Perform K Means Clustering in Python 了解 K 均值算法 使用 Python 编写您的第一个 K
  • 在 Python 中使用 lru_cache 进行缓存

    有很多方法可以实现快速响应的应用程序 缓存是一种方法 如果使用得当 可以使事情变得更快 同时减少计算资源的负载 蟒蛇的功能工具模块附带 lru cache 装饰器 这使您能够使用以下命令缓存函数的结果最近最少使用 LRU 策略 这是一种简单
  • 拼写错误、缺失或误用 Python 关键字

    以下是有关 Python 关键字的更多信息的资源 Python 关键字 简介 真正的 Python 文章 Python 3 8 关键字 Python 文档
  • Python 标准 REPL:快速尝试代码和想法

    目录 Getting to Know the Python Standard REPL 什么是 Python 的交互式 Shell 或 REPL 为什么使用 Python REPL Starting and Ending REPL Inte