Python 3 教程

Python 是一种功能强大的编程语言,非常适合编写脚本和快速应用程序开发。它用于 Web 开发(如:Django 和 Bottle)、科学和数学计算(Orange、SymPy、NumPy)到桌面图形用户界面(Pygame、Panda3D)。

本教程向您介绍Python 3的基本概念和特性,阅读本教程后,您将能够阅读和编写基本的Python程序,并自行深入探索Python。

本教程适用于了解其他编程语言并希望快速开始使用 Python 的人员。


Python 初学者

如果您是编程新手,我们建议您访问:

  1. Python 编程- 关于什么是 Python、如何开始使用 Python、为什么要学习它以及如何学习它的综合指南。
  2. Python 教程- 一一关注侧边栏链接。
  3. Python 示例- 初学者可以遵循的简单示例。

本教程涵盖了哪些内容?


在您的计算机上运行 Python

您无需在计算机上安装 Python 即可遵循本教程。但是,我们建议您在自己的计算机上运行本教程中包含的 Python 程序。

Python简介

让我们编写我们的第一个 Python 程序“Hello, World!”。这是一个简单的打印程序你好世界! 在标准输出设备(屏幕)上。


“你好世界!” 程序

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">print</span>(<span style="color:#98c379">"Hello, World!"</span>)</code></span></span></span></span>

当你运行程序时,输出将是:

你好世界!

在这个程序中,我们使用了内置的print()函数来打印你好世界! 细绳。


变量和文字

变量是用于在内存中存储数据的命名位置。下面是一个例子:

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code>a = <span style="color:#d19a66">5</span>  
</code></span></span>

这里, 一个是一个变量。我们已经分配5给变量一个

我们不需要在 Python 中定义变量类型。你可以这样做:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>a = <span style="color:#d19a66">5</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">"a ="</span>, <span style="color:#d19a66">5</span>)
a = <span style="color:#98c379">"High five"</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">"a ="</span>, a)</code></span></span></span></span>

最初,整数值5被分配给变量一个. 然后,字符串举手击掌 分配给同一个变量。

顺便说一下,5是数字文字和"High five"字符串文字。

当你运行程序时,输出将是:

一 = 5
a = 高五

访问Python 变量、常量和文字以了解更多信息。


运营商

运算符是对操作数(变量和值)执行操作的特殊符号。

这部分我们来谈谈算术和赋值运算符。

算术运算符用于执行数学运算,如加法、减法、乘法等。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>x = <span style="color:#d19a66">14</span>
y = <span style="color:#d19a66">4</span>

<span style="color:#ffddbe"># Add two operands</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">'x + y ='</span>, x+y) <span style="color:#ffddbe"># Output: x + y = 18</span>

<span style="color:#ffddbe"># Subtract right operand from the left</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">'x - y ='</span>, x-y) <span style="color:#ffddbe"># Output: x - y = 10</span>

<span style="color:#ffddbe"># Multiply two operands</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">'x * y ='</span>, x*y) <span style="color:#ffddbe"># Output: x * y = 56</span>

<span style="color:#ffddbe"># Divide left operand by the right one </span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">'x / y ='</span>, x/y) <span style="color:#ffddbe"># Output: x / y = 3.5</span>

<span style="color:#ffddbe"># Floor division (quotient)</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">'x // y ='</span>, x//y) <span style="color:#ffddbe"># Output: x // y = 3</span>

<span style="color:#ffddbe"># Remainder of the division of left operand by the right</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">'x % y ='</span>, x%y) <span style="color:#ffddbe"># Output: x % y = 2</span>

<span style="color:#ffddbe"># Left operand raised to the power of right (x^y)</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">'x ** y ='</span>, x**y) <span style="color:#ffddbe"># Output: x ** y = 38416</span></code></span></span></span></span>

赋值运算符用于为变量赋值。您已经看到了=运算符的使用。让我们尝试更多的赋值运算符。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>x = <span style="color:#d19a66">5</span>

<span style="color:#ffddbe"># x += 5 ----> x = x + 5</span>
x +=<span style="color:#d19a66">5</span>
<span style="color:#c678dd">print</span>(x) <span style="color:#ffddbe"># Output: 10</span>

<span style="color:#ffddbe"># x /= 5 ----> x = x / 5</span>
x /= <span style="color:#d19a66">5</span>
<span style="color:#c678dd">print</span>(x) <span style="color:#ffddbe"># Output: 2.0</span></code></span></span></span></span>

其他常用的赋值运算符:-=*=%=//=**=

访问Python 运算符以详细了解所有运算符。


获取用户输入

在 Python 中,您可以使用input() 函数来获取用户的输入。例如:

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code>inputString = <span style="color:#c678dd">input</span>(<span style="color:#98c379">'Enter a sentence:'</span>)
<span style="color:#c678dd">print</span>(<span style="color:#98c379">'The inputted string is:'</span>, inputString)
</code></span></span>

当你运行程序时,输出将是:

输入一句话:你好。
输入的字符串是:你好。 

Python 注释

在 Python 中有 3 种创建注释的方法。

#这是一条评论
  “““这是一个 
    多行
    评论。”””
  '''这也是一个
     多行
     评论。'''

要了解有关注释和文档字符串的更多信息,请访问:Python 注释


类型转换

将一种数据类型(整数、字符串、浮点数等)的值转换为另一种数据类型的过程称为类型转换。Python 有两种类型的转换。

隐式类型转换

隐式转换不需要任何用户参与。例如:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>num_int = <span style="color:#d19a66">123</span>  <span style="color:#ffddbe"># integer type</span>
num_flo = <span style="color:#d19a66">1.23</span> <span style="color:#ffddbe"># float type</span>

num_new = num_int + num_flo

<span style="color:#c678dd">print</span>(<span style="color:#98c379">"Value of num_new:"</span>,num_new)
<span style="color:#c678dd">print</span>(<span style="color:#98c379">"datatype of num_new:"</span>,type(num_new))</code></span></span></span></span>

当你运行程序时,输出将是:

num_new 的值:124.23
num_new 的数据类型:num_new 的数据类型:<class 'float'>

这里, num_new 具有浮点数据类型,因为 Python 总是将较小的数据类型转换为较大的数据类型,以避免数据丢失。

这是一个 Python 解释器不能隐式类型转换的示例。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>num_int = <span style="color:#d19a66">123</span>     <span style="color:#ffddbe"># int type</span>
num_str = <span style="color:#98c379">"456"</span>   <span style="color:#ffddbe"># str type</span>

<span style="color:#c678dd">print</span>(num_int+num_str)</code></span></span></span></span>

当你运行程序时,你会得到

类型错误:+ 不支持的操作数类型:'int' 和 'str'

但是,Python 对这种情况有一个解决方案,称为显式转换。

显式转换

在显式转换的情况下,您将对象的数据类型转换为所需的数据类型。我们使用诸如int()float()str()等预定义函数来执行显式类型转换。例如:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>num_int = <span style="color:#d19a66">123</span>  <span style="color:#ffddbe"># int type</span>
num_str = <span style="color:#98c379">"456"</span> <span style="color:#ffddbe"># str type</span>

<span style="color:#ffddbe"># explicitly converted to int type</span>
num_str = int(num_str) 

<span style="color:#c678dd">print</span>(num_int+num_str)</code></span></span></span></span>

要了解更多信息,请访问Python 类型转换


Python 数字类型

Python 支持整数、浮点数和复数。它们在 Python 中被定义为int,floatcomplexclass 。除此之外,布尔值:TrueFalse是整数的子类型。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#ffddbe"># Output: <class 'int'></span>
<span style="color:#c678dd">print</span>(type(<span style="color:#d19a66">5</span>))

<span style="color:#ffddbe"># Output: <class 'float'></span>
<span style="color:#c678dd">print</span>(type(<span style="color:#d19a66">5.0</span>))

c = <span style="color:#d19a66">5</span> + <span style="color:#d19a66">3j</span>

<span style="color:#ffddbe"># Output: <class 'complex'></span>
<span style="color:#c678dd">print</span>(type(c))</code></span></span></span></span>

要了解更多信息,请访问Python 数字类型


Python 数据结构

Python 提供了一系列通常称为序列的复合数据类型。您将在本节中了解这些内置类型。


列表

通过将所有项目(元素)放在方括号内[]以逗号分隔来创建列表。

它可以有任意数量的项目,它们可以是不同的类型(整数、浮点数、字符串等)

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#ffddbe"># empty list</span>
my_list = []

<span style="color:#ffddbe"># list of integers</span>
my_list = [<span style="color:#d19a66">1</span>, <span style="color:#d19a66">2</span>, <span style="color:#d19a66">3</span>]

<span style="color:#ffddbe"># list with mixed data types</span>
my_list = [<span style="color:#d19a66">1</span>, <span style="color:#98c379">"Hello"</span>, <span style="color:#d19a66">3.4</span>]
</code></span></span>

您还可以使用list() 函数来创建列表。

以下是访问列表元素的方法。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>language = [<span style="color:#98c379">"French"</span>, <span style="color:#98c379">"German"</span>, <span style="color:#98c379">"English"</span>, <span style="color:#98c379">"Polish"</span>]

<span style="color:#ffddbe"># Accessing first element</span>
<span style="color:#c678dd">print</span>(language[<span style="color:#d19a66">0</span>])


<span style="color:#ffddbe"># Accessing fourth element</span>
<span style="color:#c678dd">print</span>(language[<span style="color:#d19a66">3</span>])</code></span></span></span></span>

您可以使用索引运算符[]访问列表中的项目。索引从 0 开始。因此,具有 10 个元素的列表的索引从 0 到 9。

Python 还允许对其序列进行负索引。-1 的索引指的是最后一项,-2 指的是倒数第二项,依此类推。

查看这些资源以获取有关 Python 列表的更多信息:


元组

元组类似于列表,但元组的元素一旦定义就不能更改。而在列表中,可以修改项目。

基本上,列表是可变的,而元组是不可变的。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>language = (<span style="color:#98c379">"French"</span>, <span style="color:#98c379">"German"</span>, <span style="color:#98c379">"English"</span>, <span style="color:#98c379">"Polish"</span>)
<span style="color:#c678dd">print</span>(language)</code></span></span></span></span>

您还可以使用tuple() 函数来创建元组。

您可以以类似于列表的方式访问元组的元素。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>language = (<span style="color:#98c379">"French"</span>, <span style="color:#98c379">"German"</span>, <span style="color:#98c379">"English"</span>, <span style="color:#98c379">"Polish"</span>)

<span style="color:#c678dd">print</span>(language[<span style="color:#d19a66">1</span>]) <span style="color:#ffddbe">#Output: German</span>
<span style="color:#c678dd">print</span>(language[<span style="color:#d19a66">3</span>]) <span style="color:#ffddbe">#Output: Polish</span>
<span style="color:#c678dd">print</span>(language[<span style="color:#d19a66">-1</span>]) <span style="color:#ffddbe"># Output: Polish</span></code></span></span></span></span>

您不能删除元组的元素,但是,您可以使用del运算符完全删除元组本身。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>language = (<span style="color:#98c379">"French"</span>, <span style="color:#98c379">"German"</span>, <span style="color:#98c379">"English"</span>, <span style="color:#98c379">"Polish"</span>)
<span style="color:#c678dd">del</span> language

<span style="color:#ffddbe"># NameError: name 'language' is not defined</span>
<span style="color:#c678dd">print</span>(language)</code></span></span></span></span>

要了解更多信息,请访问Python 元组


细绳

字符串是一个字符序列。以下是创建字符串的不同方法。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#ffddbe"># all of the following are equivalent</span>
my_string = <span style="color:#98c379">'Hello'</span>
<span style="color:#c678dd">print</span>(my_string)

my_string = <span style="color:#98c379">"Hello"</span>
<span style="color:#c678dd">print</span>(my_string)

my_string = <span style="color:#98c379">'''Hello'''</span>
<span style="color:#c678dd">print</span>(my_string)

<span style="color:#ffddbe"># triple quotes string can extend multiple lines</span>
my_string = <span style="color:#98c379">"""Hello, welcome to
           the world of Python"""</span>
<span style="color:#c678dd">print</span>(my_string)</code></span></span></span></span>

您可以使用索引访问字符串的单个字符(以类似于列表和元组的方式)。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>str = <span style="color:#98c379">'programiz'</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">'str = '</span>, str)

<span style="color:#c678dd">print</span>(<span style="color:#98c379">'str[0] = '</span>, str[<span style="color:#d19a66">0</span>]) <span style="color:#ffddbe"># Output: p</span>

<span style="color:#c678dd">print</span>(<span style="color:#98c379">'str[-1] = '</span>, str[<span style="color:#d19a66">-1</span>]) <span style="color:#ffddbe"># Output: z</span>

<span style="color:#ffddbe">#slicing 2nd to 5th character</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">'str[1:5] = '</span>, str[<span style="color:#d19a66">1</span>:<span style="color:#d19a66">5</span>]) <span style="color:#ffddbe"># Output: rogr</span>

<span style="color:#ffddbe">#slicing 6th to 2nd last character</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">'str[5:-2] = '</span>, str[<span style="color:#d19a66">5</span>:<span style="color:#d19a66">-2</span>]) <span style="color:#ffddbe"># Output: am</span></code></span></span></span></span>

字符串是不可变的。一旦分配了字符串,就不能更改它的元素。但是,您可以将一个字符串分配给另一个字符串。此外,您可以使用del运算符删除字符串。

连接可能是最常见的字符串操作。要连接字符串,请使用+运算符。同样,该*运算符可用于将字符串重复给定次数。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>str1 = <span style="color:#98c379">'Hello '</span>
str2 =<span style="color:#98c379">'World!'</span>

<span style="color:#ffddbe"># Output: Hello World!</span>
<span style="color:#c678dd">print</span>(str1 + str2)

<span style="color:#ffddbe"># Hello Hello Hello</span>
<span style="color:#c678dd">print</span>(str1 * <span style="color:#d19a66">3</span>)</code></span></span></span></span>

查看这些资源以获取有关 Python 字符串的更多信息:


集合是一个无序的项目集合,其中每个元素都是唯一的(没有重复项)。

以下是在 Python 中创建集合的方法。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#ffddbe"># set of integers</span>
my_set = {<span style="color:#d19a66">1</span>, <span style="color:#d19a66">2</span>, <span style="color:#d19a66">3</span>}
<span style="color:#c678dd">print</span>(my_set)

<span style="color:#ffddbe"># set of mixed datatypes</span>
my_set = {<span style="color:#d19a66">1.0</span>, <span style="color:#98c379">"Hello"</span>, (<span style="color:#d19a66">1</span>, <span style="color:#d19a66">2</span>, <span style="color:#d19a66">3</span>)}
<span style="color:#c678dd">print</span>(my_set)</code></span></span></span></span>

您还可以使用set()函数来创建集合。

集合是可变的。您可以添加、删除和删除集合的元素。但是,您不能将集合中的一项替换为另一项,因为它们是无序的并且索引没有意义。

让我们试试常用的 set 方法:add()update()remove()

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#ffddbe"># set of integers</span>
my_set = {<span style="color:#d19a66">1</span>, <span style="color:#d19a66">2</span>, <span style="color:#d19a66">3</span>}

my_set.add(<span style="color:#d19a66">4</span>)
<span style="color:#c678dd">print</span>(my_set) <span style="color:#ffddbe"># Output: {1, 2, 3, 4}</span>

my_set.add(<span style="color:#d19a66">2</span>)
<span style="color:#c678dd">print</span>(my_set) <span style="color:#ffddbe"># Output: {1, 2, 3, 4}</span>

my_set.update([<span style="color:#d19a66">3</span>, <span style="color:#d19a66">4</span>, <span style="color:#d19a66">5</span>])
<span style="color:#c678dd">print</span>(my_set) <span style="color:#ffddbe"># Output: {1, 2, 3, 4, 5}</span>

my_set.remove(<span style="color:#d19a66">4</span>)
<span style="color:#c678dd">print</span>(my_set) <span style="color:#ffddbe"># Output: {1, 2, 3, 5}</span></code></span></span></span></span>

让我们尝试一些常用的集合操作:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>A = {<span style="color:#d19a66">1</span>, <span style="color:#d19a66">2</span>, <span style="color:#d19a66">3</span>}
B = {<span style="color:#d19a66">2</span>, <span style="color:#d19a66">3</span>, <span style="color:#d19a66">4</span>, <span style="color:#d19a66">5</span>}

<span style="color:#ffddbe"># Equivalent to A.union(B) </span>
<span style="color:#ffddbe"># Also equivalent to B.union(A)</span>
<span style="color:#c678dd">print</span>(A | B) <span style="color:#ffddbe"># Output: {1, 2, 3, 4, 5}</span>

<span style="color:#ffddbe"># Equivalent to A.intersection(B)</span>
<span style="color:#ffddbe"># Also equivalent to B.intersection(A)</span>
<span style="color:#c678dd">print</span> (A & B) <span style="color:#ffddbe"># Output: {2, 3}</span>

<span style="color:#ffddbe"># Set Difference</span>
<span style="color:#c678dd">print</span> (A - B) <span style="color:#ffddbe"># Output: {1}</span>

<span style="color:#ffddbe"># Set Symmetric Difference</span>
<span style="color:#c678dd">print</span>(A ^ B)  <span style="color:#ffddbe"># Output: {1, 4, 5}</span></code></span></span></span></span>

更多资源:


字典

字典是项目的无序集合。虽然其他复合数据类型只有作为元素的值,但字典有一key: value对。例如:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#ffddbe"># empty dictionary</span>
my_dict = {}

<span style="color:#ffddbe"># dictionary with integer keys</span>
my_dict = {<span style="color:#d19a66">1</span>: <span style="color:#98c379">'apple'</span>, <span style="color:#d19a66">2</span>: <span style="color:#98c379">'ball'</span>}

<span style="color:#ffddbe"># dictionary with mixed keys</span>
my_dict = {<span style="color:#98c379">'name'</span>: <span style="color:#98c379">'John'</span>, <span style="color:#d19a66">1</span>: [<span style="color:#d19a66">2</span>, <span style="color:#d19a66">4</span>, <span style="color:#d19a66">3</span>]}</code></span></span></span></span>

您还可以使用dict()函数来创建字典。

要访问字典中的值,请使用键。例如:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>person = {<span style="color:#98c379">'name'</span>:<span style="color:#98c379">'Jack'</span>, <span style="color:#98c379">'age'</span>: <span style="color:#d19a66">26</span>, <span style="color:#98c379">'salary'</span>: <span style="color:#d19a66">4534.2</span>}
<span style="color:#c678dd">print</span>(person[<span style="color:#98c379">'age'</span>]) <span style="color:#ffddbe"># Output: 26</span></code></span></span></span></span>

以下是更改、添加或删除字典元素的方法。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>person = {<span style="color:#98c379">'name'</span>:<span style="color:#98c379">'Jack'</span>, <span style="color:#98c379">'age'</span>: <span style="color:#d19a66">26</span>}

<span style="color:#ffddbe"># Changing age to 36</span>
person[<span style="color:#98c379">'age'</span>] = <span style="color:#d19a66">36</span> 
<span style="color:#c678dd">print</span>(person) <span style="color:#ffddbe"># Output: {'name': 'Jack', 'age': 36}</span>

<span style="color:#ffddbe"># Adding salary key, value pair</span>
person[<span style="color:#98c379">'salary'</span>] = <span style="color:#d19a66">4342.4</span>
<span style="color:#c678dd">print</span>(person) <span style="color:#ffddbe"># Output: {'name': 'Jack', 'age': 36, 'salary': 4342.4}</span>


<span style="color:#ffddbe"># Deleting age</span>
<span style="color:#c678dd">del</span> person[<span style="color:#98c379">'age'</span>]
<span style="color:#c678dd">print</span>(person) <span style="color:#ffddbe"># Output: {'name': 'Jack', 'salary': 4342.4}</span>

<span style="color:#ffddbe"># Deleting entire dictionary</span>
<span style="color:#c678dd">del</span> person</code></span></span></span></span>

更多资源:


Python范围()

range() 返回给定起始整数到终止整数之间的不可变数字序列。

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code>
<span style="color:#c678dd">print</span>(range(<span style="color:#d19a66">1</span>, <span style="color:#d19a66">10</span>)) <span style="color:#ffddbe"># Output: range(1, 10)</span>
</code></span></span>

输出是可迭代的,您可以将其转换为列表、元组、集合等。例如:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>numbers = range(<span style="color:#d19a66">1</span>, <span style="color:#d19a66">6</span>)

<span style="color:#c678dd">print</span>(list(numbers)) <span style="color:#ffddbe"># Output: [1, 2, 3, 4, 5]</span>
<span style="color:#c678dd">print</span>(tuple(numbers)) <span style="color:#ffddbe"># Output: (1, 2, 3, 4, 5)</span>
<span style="color:#c678dd">print</span>(set(numbers)) <span style="color:#ffddbe"># Output: {1, 2, 3, 4, 5}</span>

<span style="color:#ffddbe"># Output: {1: 99, 2: 99, 3: 99, 4: 99, 5: 99} </span>
<span style="color:#c678dd">print</span>(dict.fromkeys(numbers, <span style="color:#d19a66">99</span>))</code></span></span></span></span>

我们在上面的例子中省略了可选step参数range()。省略时,step默认为 1。让我们尝试几个带step参数的示例。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#ffddbe"># Equivalent to: numbers = range(1, 6)</span>
numbers1 = range(<span style="color:#d19a66">1</span>, <span style="color:#d19a66">6</span> , <span style="color:#d19a66">1</span>)
<span style="color:#c678dd">print</span>(list(numbers1)) <span style="color:#ffddbe"># Output: [1, 2, 3, 4, 5]</span>

numbers2 = range(<span style="color:#d19a66">1</span>, <span style="color:#d19a66">6</span>, <span style="color:#d19a66">2</span>)
<span style="color:#c678dd">print</span>(list(numbers2)) <span style="color:#ffddbe"># Output: [1, 3, 5]</span>

numbers3 = range(<span style="color:#d19a66">5</span>, <span style="color:#d19a66">0</span>, <span style="color:#d19a66">-1</span>)
<span style="color:#c678dd">print</span>(list(numbers3)) <span style="color:#ffddbe"># Output: [5, 4, 3, 2, 1]</span></code></span></span></span></span>

Python 控制流


if...else 语句

if...else如果您想在不同的条件下执行不同的操作(运行不同的代码),则使用该语句。例如:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>num = <span style="color:#d19a66">-1</span>

<span style="color:#c678dd">if</span> num > <span style="color:#d19a66">0</span>:
    <span style="color:#c678dd">print</span>(<span style="color:#98c379">"Positive number"</span>)
<span style="color:#c678dd">elif</span> num == <span style="color:#d19a66">0</span>:
    <span style="color:#c678dd">print</span>(<span style="color:#98c379">"Zero"</span>)
<span style="color:#c678dd">else</span>:
    <span style="color:#c678dd">print</span>(<span style="color:#98c379">"Negative number"</span>)
    
<span style="color:#ffddbe"># Output: Negative number</span></code></span></span></span></span>

可以有零个或多个elif部分,该else部分是可选的。

大多数编程语言使用{}来指定代码块。Python 使用缩进。

代码块以缩进开始,以第一个未缩进的行结束。缩进量由您决定,但它必须在整个块中保持一致。

通常,四个空格用于缩进,比制表符更受欢迎。

让我们尝试另一个例子:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">if</span> <span style="color:#56b6c2">False</span>:
  <span style="color:#c678dd">print</span>(<span style="color:#98c379">"I am inside the body of if."</span>)
  <span style="color:#c678dd">print</span>(<span style="color:#98c379">"I am also inside the body of if."</span>)
<span style="color:#c678dd">print</span>(<span style="color:#98c379">"I am outside the body of if"</span>)

<span style="color:#ffddbe"># Output: I am outside the body of if.</span></code></span></span></span></span>

在继续下一部分之前,我们建议您检查比较运算符逻辑运算符

另外,请查看Python if...else详细信息。


while 循环

与大多数编程语言一样while,只要测试表达式(条件)为,循环就用于迭代代码块true。下面是一个求自然数和的例子:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>n = <span style="color:#d19a66">100</span>

<span style="color:#ffddbe"># initialize sum and counter</span>
sum = <span style="color:#d19a66">0</span>
i = <span style="color:#d19a66">1</span>

<span style="color:#c678dd">while</span> i <= n:
    sum = sum + i
    i = i+<span style="color:#d19a66">1</span>    <span style="color:#ffddbe"># update counter</span>

<span style="color:#c678dd">print</span>(<span style="color:#98c379">"The sum is"</span>, sum)

<span style="color:#ffddbe"># Output: The sum is 5050</span></code></span></span></span></span>

在 Python 中,while 循环可以有可选else块,如果while循环中的条件计算为,则执行该块False。但是,如果循环以break语句终止,Python 解释器将忽略该else块。

要了解更多信息,请访问Python while Loop


for循环

在 Python 中,for循环用于迭代序列(列表、元组、字符串)或其他可迭代对象。遍历一个序列称为遍历。

这是一个查找列表中存储的所有数字总和的示例。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>numbers = [<span style="color:#d19a66">6</span>, <span style="color:#d19a66">5</span>, <span style="color:#d19a66">3</span>, <span style="color:#d19a66">8</span>, <span style="color:#d19a66">4</span>, <span style="color:#d19a66">2</span>]

sum = <span style="color:#d19a66">0</span>

<span style="color:#ffddbe"># iterate over the list</span>
<span style="color:#c678dd">for</span> val <span style="color:#c678dd">in</span> numbers:
  sum = sum+val

<span style="color:#c678dd">print</span>(<span style="color:#98c379">"The sum is"</span>, sum) <span style="color:#ffddbe"># Output: The sum is 28</span></code></span></span></span></span>

注意in上面例子中操作符的使用。的in操作者返回True如果值/变量的序列中找到。

在 Python 中,for循环可以有可选的else块。如果for循环中使用的序列中的项目耗尽,则执行 else 部分。但是,如果循环以break语句终止,Python 解释器将忽略该else块。

要了解更多信息,请访问Python for Loop


break 语句

break 语句终止包含它的循环。程序的控制流向紧接在循环体之后的语句。例如:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">for</span> val <span style="color:#c678dd">in</span> <span style="color:#98c379">"string"</span>:
    <span style="color:#c678dd">if</span> val == <span style="color:#98c379">"r"</span>:
        <span style="color:#c678dd">break</span>
    <span style="color:#c678dd">print</span>(val)

<span style="color:#c678dd">print</span>(<span style="color:#98c379">"The end"</span>)</code></span></span></span></span>

当你运行程序时,输出将是:

秒
吨
结束

继续声明

continue 语句用于跳过循环内仅当前迭代的其余代码。循环不会终止,而是继续进行下一次迭代。例如:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">for</span> val <span style="color:#c678dd">in</span> <span style="color:#98c379">"string"</span>:
    <span style="color:#c678dd">if</span> val == <span style="color:#98c379">"r"</span>:
        <span style="color:#c678dd">continue</span>
    <span style="color:#c678dd">print</span>(val)

<span style="color:#c678dd">print</span>(<span style="color:#98c379">"The end"</span>)</code></span></span></span></span>

当你运行程序时,输出将是:

秒
吨
一世
n
G
结束

要了解更多关于breakcontinue有详细说明,请访问Python的休息和继续


通过声明

假设您有一个尚未实现的循环或函数,但希望在将来实现它。他们不能有一个空的身体。口译员会抱怨。因此,您使用该pass语句来构造一个什么都不做的主体。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>sequence = {<span style="color:#98c379">'p'</span>, <span style="color:#98c379">'a'</span>, <span style="color:#98c379">'s'</span>, <span style="color:#98c379">'s'</span>}
<span style="color:#c678dd">for</span> val <span style="color:#c678dd">in</span> sequence:
    <span style="color:#c678dd">pass</span></code></span></span></span></span>

Python函数

函数是一组执行特定任务的相关语句。您可以使用def关键字在 Python 中创建函数。

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">def</span> <span style="color:#61aeee">print_lines</span>():
  <span style="color:#c678dd">print</span>(<span style="color:#98c379">"I am line1."</span>)
  <span style="color:#c678dd">print</span>(<span style="color:#98c379">"I am line2."</span>)
</code></span></span>

您必须调用该函数来运行其中的代码。就是这样:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">def</span> <span style="color:#61aeee">print_lines</span>():
  <span style="color:#c678dd">print</span>(<span style="color:#98c379">"I am line1."</span>)
  <span style="color:#c678dd">print</span>(<span style="color:#98c379">"I am line2."</span>)

<span style="color:#ffddbe"># function call</span>
print_lines()</code></span></span></span></span>

函数可以接受参数。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">def</span> <span style="color:#61aeee">add_numbers</span>(a, b):
  sum = a + b
  <span style="color:#c678dd">print</span>(sum)

add_numbers(<span style="color:#d19a66">4</span>, <span style="color:#d19a66">5</span>)

<span style="color:#ffddbe"># Output: 9</span></code></span></span></span></span>

您还可以使用return语句从函数返回值。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">def</span> <span style="color:#61aeee">add_numbers</span>(a, b):
  sum = a + b
  <span style="color:#c678dd">return</span> sum

result = add_numbers(<span style="color:#d19a66">4</span>, <span style="color:#d19a66">5</span>)
<span style="color:#c678dd">print</span>(result)

<span style="color:#ffddbe"># Output: 9</span></code></span></span></span></span>

以下是一些可供检查的资源:


递归(递归函数)

调用自身的函数称为递归函数,这个过程称为递归。

每个递归函数都必须有一个停止递归的基本条件,否则函数会无限调用自身。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#ffddbe"># Recursive function to find the factorial of a number</span>

<span style="color:#c678dd">def</span> <span style="color:#61aeee">calc_factorial</span>(x):

    <span style="color:#c678dd">if</span> x == <span style="color:#d19a66">1</span>:
        <span style="color:#c678dd">return</span> <span style="color:#d19a66">1</span>
    <span style="color:#c678dd">else</span>:
        <span style="color:#c678dd">return</span> (x * calc_factorial(x<span style="color:#d19a66">-1</span>))

num = <span style="color:#d19a66">6</span>
<span style="color:#c678dd">print</span>(<span style="color:#98c379">"The factorial of"</span>, num, <span style="color:#98c379">"is"</span>, calc_factorial(num)) 

<span style="color:#ffddbe"># Output: The factorial of 6 is 720</span></code></span></span></span></span>

访问Python 递归以了解更多信息。


Lambda 函数

在 Python 中,您可以定义没有名称的函数。这些函数称为 lambda 或匿名函数。要创建 lambda 函数,请使用lambda关键字。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>square = <span style="color:#c678dd">lambda</span> x: x ** <span style="color:#d19a66">2</span>
<span style="color:#c678dd">print</span>(square(<span style="color:#d19a66">5</span>))

<span style="color:#ffddbe"># Output: 25</span></code></span></span></span></span>

当我们在短时间内需要一个无名函数时,我们使用 lambda 函数。LAMBDA功能与内置的功能,如用于沿filter()map()等等。

要了解更多信息,请访问:


模块

模块是指包含 Python 语句和定义的文件。

包含 Python 代码的文件,例如:example.py,称为模块,其模块名称为example.

让我们创建它并将其另存为example.py.

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#ffddbe"># Python Module example</span>

<span style="color:#c678dd">def</span> <span style="color:#61aeee">add</span>(a, b):
   <span style="color:#c678dd">return</span> a + b
</code></span></span>

为了使用这个模块,我们使用import关键字。

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#ffddbe"># importing example module</span>
<span style="color:#c678dd">import</span> example 

<span style="color:#ffddbe"># accessing the function inside the module using . operator</span>
example.add(<span style="color:#d19a66">4</span>, <span style="color:#d19a66">5.5</span>) 
</code></span></span>

Python 有大量可供使用的标准模块。例如:

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">import</span> math

result = math.log2(<span style="color:#d19a66">5</span>) <span style="color:#ffddbe"># return the base-2 logarithm</span>
<span style="color:#c678dd">print</span>(result) <span style="color:#ffddbe"># Output: 2.321928094887362</span></code></span></span></span></span>

您可以从模块导入特定名称,而无需将模块作为一个整体导入。这是一个例子。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">from</span> math <span style="color:#c678dd">import</span> pi
<span style="color:#c678dd">print</span>(<span style="color:#98c379">"The value of pi is"</span>, pi)

<span style="color:#ffddbe"># Output: The value of pi is 3.141592653589793</span></code></span></span></span></span>

更多资源:


Python 文件输入/输出

文件操作按以下顺序进行。

  1. 打开文件
  2. 读或写(执行操作)
  3. 关闭文件

如何打开文件?

您可以使用open()函数打开文件。

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code>f = open(<span style="color:#98c379">"test.txt"</span>)    <span style="color:#ffddbe"># open file in current directory</span>
f = open(<span style="color:#98c379">"C:/Python33/README.txt"</span>)  <span style="color:#ffddbe"># specifying full path</span>
</code></span></span>

我们可以在打开文件时指定模式。

模式 描述
'r' 打开一个文件进行阅读。(默认)
'w' 打开一个文件进行写入。如果不存在则创建一个新文件,如果存在则截断该文件。
'X' 打开一个文件进行独占创建。如果文件已存在,则操作失败。
'一个' 打开以在文件末尾追加而不截断它。如果它不存在,则创建一个新文件。
't' 以文本模式打开。(默认)
'乙' 以二进制模式打开。
'+' 打开文件进行更新(读取和写入)
<span style="background-color:#383b40"><span style="color:#d5d5d5"><code>f = open(<span style="color:#98c379">"test.txt"</span>)      <span style="color:#ffddbe"># equivalent to 'r' or 'rt'</span>
f = open(<span style="color:#98c379">"test.txt"</span>,<span style="color:#98c379">'w'</span>)  <span style="color:#ffddbe"># write in text mode</span>
f = open(<span style="color:#98c379">"img.bmp"</span>,<span style="color:#98c379">'r+b'</span>) <span style="color:#ffddbe"># read and write in binary mode</span>
</code></span></span>

如何关闭文件?

要关闭文件,请使用close()方法。

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code>f = open(<span style="color:#98c379">"test.txt"</span>,encoding = <span style="color:#98c379">'utf-8'</span>)
<span style="color:#ffddbe"># perform file operations</span>
f.close()
</code></span></span>

如何写入文件?

为了在 Python 中写入文件,我们需要以 write 'w'、 append'a'或独占创建'x'模式打开它。

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">with</span> open(<span style="color:#98c379">"test.txt"</span>,<span style="color:#98c379">'w'</span>,encoding = <span style="color:#98c379">'utf-8'</span>) <span style="color:#c678dd">as</span> f:
   f.write(<span style="color:#98c379">"my first file\n"</span>)
   f.write(<span style="color:#98c379">"This file\n\n"</span>)
   f.write(<span style="color:#98c379">"contains three lines\n"</span>)
</code></span></span>

在这里,我们使用了with语句来打开一个文件。这可确保在退出 with 中的块时关闭文件。


如何读取文件?

要在 Python 中读取文件,您必须以读取模式打开文件。

有多种方法可用于此目的。我们可以使用该read(size)方法读取大小数量的数据。

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code>f = open(<span style="color:#98c379">"test.txt"</span>,<span style="color:#98c379">'r'</span>,encoding = <span style="color:#98c379">'utf-8'</span>)
f.read(<span style="color:#d19a66">4</span>)    <span style="color:#ffddbe"># read the first 4 data</span>
</code></span></span>

访问Python 文件 I/O了解更多信息。


蟒蛇目录

目录或文件夹是文件和子目录的集合。Python 有os 模块,它提供了许多有用的方法来处理目录和文件。

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">import</span> os

os.getcwd()  // present working directory
os.chdir(<span style="color:#98c379">'D:\\Hello'</span>) // Changing current directory to D:\Hello
os.listdir()  // list all sub directories <span style="color:#c678dd">and</span> files <span style="color:#c678dd">in</span> that path
os.mkdir(<span style="color:#98c379">'test'</span>) // making a new directory test
os.rename(<span style="color:#98c379">'test'</span>,<span style="color:#98c379">'tasty'</span>) // renaming the directory test to tasty
os.remove(<span style="color:#98c379">'old.txt'</span>)  // deleting old.txt file
</code></span></span>

访问Python 目录以了解更多信息。


Python异常处理

运行时发生的错误称为异常。例如,当我们尝试打开的文件不存在时FileNotFoundError,它们会发生,将数字除以零ZeroDivisionError等。

访问此页面以了解Python 中的所有内置异常

如果未处理异常,则会发出错误消息,我们的程序会突然意外停止。


在 Python 中,可以使用try语句处理异常。当异常被捕获时,执行什么操作符取决于您。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#ffddbe"># import module sys to get the type of exception</span>
<span style="color:#c678dd">import</span> sys

randomList = [<span style="color:#98c379">'a'</span>, <span style="color:#d19a66">0</span>, <span style="color:#d19a66">2</span>]

<span style="color:#c678dd">for</span> entry <span style="color:#c678dd">in</span> randomList:
    <span style="color:#c678dd">try</span>:
        <span style="color:#c678dd">print</span>(<span style="color:#98c379">"The entry is"</span>, entry)
        r = <span style="color:#d19a66">1</span>/int(entry)
        <span style="color:#c678dd">break</span>
    <span style="color:#c678dd">except</span>:
        <span style="color:#c678dd">print</span>(<span style="color:#98c379">"Oops!"</span>,sys.exc_info()[<span style="color:#d19a66">0</span>],<span style="color:#98c379">"occurred."</span>)
        <span style="color:#c678dd">print</span>(<span style="color:#98c379">"Next entry."</span>)
        <span style="color:#c678dd">print</span>()
<span style="color:#c678dd">print</span>(<span style="color:#98c379">"The reciprocal of"</span>,entry,<span style="color:#98c379">"is"</span>,r)</code></span></span></span></span>

当你运行程序时,输出将是:

该条目是一个
哎呀!<class 'ValueError'> 发生。
下一个条目。

条目为 0
哎呀!<class 'ZeroDivisionError'> 发生。
下一个条目。
    
条目是 2
2的倒数是0.5

要了解如何finally使用try语句捕获特定异常和子句,请访问Python 异常处理

此外,您可以在 Python 中创建用户定义的异常。为此,请访问Python 自定义异常


面向对象编程

Python 中的一切都是一个对象,包括整数、浮点数、函数、类和None. 让我们不要关注为什么 Python 中的一切都是对象。为此,请访问此页面。相反,本节侧重于创建您自己的类和对象。


类和对象

对象只是作用于数据的数据(变量)和方法(函数)的集合。而且,类是对象的蓝图。


如何定义一个类?

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">class</span> <span style="color:#e6c07b">MyClass</span>:
   a = <span style="color:#d19a66">10</span>
   <span style="color:#c678dd">def</span> <span style="color:#61aeee">func</span>(self):
      <span style="color:#c678dd">print</span>(<span style="color:#98c379">'Hello'</span>)  
</code></span></span>

一旦定义了一个类,就会创建一个同名的新类对象。这个类对象允许我们访问不同的属性以及实例化该类的新对象。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">class</span> <span style="color:#e6c07b">MyClass</span>:
  <span style="color:#98c379">"This is my class"</span>
  a = <span style="color:#d19a66">10</span>
  <span style="color:#c678dd">def</span> <span style="color:#61aeee">func</span>(self):
    <span style="color:#c678dd">print</span>(<span style="color:#98c379">'Hello'</span>)

<span style="color:#ffddbe"># Output: 10</span>
<span style="color:#c678dd">print</span>(MyClass.a)

<span style="color:#ffddbe"># Output: <function myclass.func at 0x7f04d158b8b0></span>
<span style="color:#c678dd">print</span>(MyClass.func)

<span style="color:#ffddbe"># Output: 'This is my class'</span>
<span style="color:#c678dd">print</span>(MyClass.__doc__)</code></span></span></span></span>

您可能已经注意到self类内部函数定义中的参数,但是,我们简单地调用了该方法,就像ob.func()没有任何参数一样。它仍然有效。

这是因为,每当对象调用其方法时,对象本身都会作为第一个参数传递。所以,ob.func()转化为MyClass.func(ob).


创建对象

您也可以自己创建类的对象。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">class</span> <span style="color:#e6c07b">MyClass</span>:
  <span style="color:#98c379">"This is my class"</span>
  a = <span style="color:#d19a66">10</span>
  <span style="color:#c678dd">def</span> <span style="color:#61aeee">func</span>(self):
    <span style="color:#c678dd">print</span>(<span style="color:#98c379">'Hello'</span>)

obj1 = MyClass()
<span style="color:#c678dd">print</span>(obj1.a)        <span style="color:#ffddbe"># Output: 10</span>
 
obj2 = MyClass()
<span style="color:#c678dd">print</span>(obj1.a + <span style="color:#d19a66">5</span>)    <span style="color:#ffddbe"># Output: 15</span></code></span></span></span></span>

Python 构造函数

在 Python 中,具有名称的方法__init()__是构造函数。实例化对象时会自动调用此方法。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">class</span> <span style="color:#e6c07b">ComplexNumber</span>:
    <span style="color:#c678dd">def</span> <span style="color:#61aeee">__init__</span>(self,r = <span style="color:#d19a66">0</span>,i = <span style="color:#d19a66">0</span>):  <span style="color:#ffddbe"># constructor</span>
        self.real = r
        self.imag = i

    <span style="color:#c678dd">def</span> <span style="color:#61aeee">getData</span>(self):
        <span style="color:#c678dd">print</span>(<span style="color:#98c379">"{0}+{1}j"</span>.format(self.real,self.imag))


c1 = ComplexNumber(<span style="color:#d19a66">2</span>,<span style="color:#d19a66">3</span>) <span style="color:#ffddbe"># Create a new ComplexNumber object</span>
c1.getData() <span style="color:#ffddbe"># Output: 2+3j</span>

c2 = ComplexNumber() <span style="color:#ffddbe"># Create a new ComplexNumber object</span>
c2.getData() <span style="color:#ffddbe"># Output: 0+0j</span></code></span></span></span></span>

访问Python 类和对象以了解更多信息。


Python 继承

继承是指定义一个新类,对现有类进行很少或没有修改。让我们举个例子:

<span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">class</span> <span style="color:#e6c07b">Mammal</span>:
  <span style="color:#c678dd">def</span> <span style="color:#61aeee">displayMammalFeatures</span>(self):
    <span style="color:#c678dd">print</span>(<span style="color:#98c379">'Mammal is a warm-blooded animal.'</span>)</code></span></span>

让我们派生一个新的类 狗从这个Mammal班级。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">class</span> <span style="color:#e6c07b">Mammal</span>:
  <span style="color:#c678dd">def</span> <span style="color:#61aeee">displayMammalFeatures</span>(self):
    <span style="color:#c678dd">print</span>(<span style="color:#98c379">'Mammal is a warm-blooded animal.'</span>)

<span style="color:#c678dd">class</span> <span style="color:#e6c07b">Dog</span>(Mammal):
  <span style="color:#c678dd">def</span> <span style="color:#61aeee">displayDogFeatures</span>(self):
    <span style="color:#c678dd">print</span>(<span style="color:#98c379">'Dog has 4 legs.'</span>)

d = Dog()
d.displayDogFeatures()
d.displayMammalFeatures()</code></span></span></span></span>

请注意,我们可以displayMammalFeatures()从派生类的对象调用基类的方法d.

要了解有关继承和方法覆盖的更多信息,请访问Python 继承

如果您有兴趣,我们还建议您检查多重继承运算符重载


杂项和高级主题


迭代器

Python 中的迭代器只是一个可以迭代的对象。一个将返回数据的对象,一次一个元素。

从技术上讲,Python 迭代器对象必须实现两个特殊的方法,__iter__()__next__(),统称为迭代器协议。

如果我们可以从中获取迭代器,则该对象称为可迭代对象。Python 中的大多数内置容器,如:列表、元组、字符串等都是可迭代的。

iter()功能(这又调用__iter__()方法)从他们返回迭代。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code>my_list = [<span style="color:#d19a66">4</span>, <span style="color:#d19a66">7</span>, <span style="color:#d19a66">0</span>, <span style="color:#d19a66">3</span>]

<span style="color:#ffddbe"># get an iterator using iter()</span>
my_iter = iter(my_list)

<span style="color:#c678dd">print</span>(next(my_iter)) <span style="color:#ffddbe"># Output: 4</span>
<span style="color:#c678dd">print</span>(next(my_iter)) <span style="color:#ffddbe"># Output: 7</span></code></span></span></span></span>

要了解有关无限迭代器以及如何创建自定义迭代器的更多信息,请访问:Python 迭代器


发电机

在 Python 中构建迭代器有很多开销;我们必须用__iter__()__next__()方法实现一个类,跟踪内部状态,StopIteration在没有要返回的值时引发等。

这既冗长又违反直觉。在这种情况下,发电机会派上用场。

Python 生成器是一种创建迭代器的简单方法。

了解有关Python 生成器的更多信息。


关闭

这种将一些数据附加到代码的技术在 Python 中称为闭包。

<span style="color:#25265e"><span style="background-color:#f9fafc"><span style="background-color:#383b40"><span style="color:#d5d5d5"><code><span style="color:#c678dd">def</span> <span style="color:#61aeee">print_msg</span>(msg): <span style="color:#ffddbe"># outer enclosing function</span>
    <span style="color:#c678dd">def</span> <span style="color:#61aeee">printer</span>():  <span style="color:#ffddbe"># inner function</span>
        <span style="color:#c678dd">print</span>(msg)
    <span style="color:#c678dd">return</span> printer  <span style="color:#ffddbe"># this got changed</span>

another = print_msg(<span style="color:#98c379">"Hello"</span>) <span style="color:#ffddbe"># Output: Hello</span>
another()</code></span></span></span></span>

在这里,print_msg()函数以字符串"Hello"作为参数被调用,返回的函数被绑定到名称其他. 在调用 时another(),尽管我们已经完成了该print_msg()函数的执行,但仍然记得该消息。

在 Python 中创建闭包必须满足的条件总结为以下几点。

  • 我们必须有一个嵌套函数(函数内的函数)。
  • 嵌套函数必须引用在封闭函数中定义的值。
  • 封闭函数必须返回嵌套函数。

访问Python 闭包以了解有关闭包以及何时使用它们的更多信息。


装饰器

Python 有一个有趣的特性,称为装饰器,可以为现有代码添加功能。

这也称为元编程,因为程序的一部分试图在编译时修改程序的另一部分。

上一篇:283. Move Zeroes


下一篇:开放下载!《阿里云RPA-电商应用神器》产品资料