Python 是一种功能强大的编程语言,非常适合编写脚本和快速应用程序开发。它用于 Web 开发(如:Django 和 Bottle)、科学和数学计算(Orange、SymPy、NumPy)到桌面图形用户界面(Pygame、Panda3D)。
本教程向您介绍Python 3的基本概念和特性,阅读本教程后,您将能够阅读和编写基本的Python程序,并自行深入探索Python。
本教程适用于了解其他编程语言并希望快速开始使用 Python 的人员。
Python 初学者
如果您是编程新手,我们建议您访问:
- Python 编程- 关于什么是 Python、如何开始使用 Python、为什么要学习它以及如何学习它的综合指南。
- Python 教程- 一一关注侧边栏链接。
- Python 示例- 初学者可以遵循的简单示例。
本教程涵盖了哪些内容?
- 在您的计算机上运行 Python
- 简介(变量、运算符、I/O 等)
- 数据结构(列表、字典、集合……)
- 控制流(如果,循环,中断,...)
- 文件(文件处理、目录等)
- 异常(处理,用户定义的异常,...)
- OOP(对象和类,继承,重载,...)
- 标准库(内置函数、列表方法等)
- 杂项(生成器、装饰器、...)
在您的计算机上运行 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
,float
和complex
class 。除此之外,布尔值:True
和False
是整数的子类型。
<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 结束
要了解更多关于break
和continue
有详细说明,请访问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 文件输入/输出
文件操作按以下顺序进行。
- 打开文件
- 读或写(执行操作)
- 关闭文件
如何打开文件?
您可以使用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 中,可以使用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 有一个有趣的特性,称为装饰器,可以为现有代码添加功能。
这也称为元编程,因为程序的一部分试图在编译时修改程序的另一部分。