提交 ae68a0c3 编写于 作者: W wizardforcel

2019-11-20 11:39:55

上级 2f1cf1f3
......@@ -2,8 +2,7 @@
> 原文: [https://pythonspot.com/global-local-variables/](https://pythonspot.com/global-local-variables/)
变量有两种类型:**全局变量****局部变量**
全局变量可以在代码中的任何位置访问,局部变量只能在[作用域](https://pythonspot.com/scope/)中访问。
变量有两种类型:**全局变量****局部变量**。全局变量可以在代码中的任何位置访问,局部变量只能在[作用域](https://pythonspot.com/scope/)中访问。
![global-local-variable](img/b096b6df86baa4af3f1d9b86a8b57af2.jpg)
......@@ -23,8 +22,7 @@ print(sum(8,6))
```
变量 x 和 y 只能在函数 sum 之内使用,而在函数外部则不存在。
局部变量不能在其作用域之外使用,此行将不起作用:
变量`x``y`只能在函数`sum`之内使用,而在函数外部则不存在。局部变量不能在其作用域之外使用,此行将不起作用:
```py
......@@ -34,8 +32,7 @@ print(x)
## 全局变量
全局变量可以在代码中的任何位置使用。
在下面的示例中,我们定义了全局变量z
全局变量可以在代码中的任何位置使用。在下面的示例中,我们定义了全局变量`z`
```py
......@@ -65,7 +62,7 @@ print(z)
```
调用 afunction()之后,将更改整个程序的全局变量。
调用`afunction()`之后,将更改整个程序的全局变量。
## 练习
......
......@@ -4,13 +4,13 @@
## 作用域
变量只能到达定义它们的区域,这称为 _ 作用域 _。 将其视为可以使用变量的代码区域。 Python 支持全局变量(可在整个程序中使用)和局部变量。
变量只能到达定义它们的区域,这称为作用域。 将其视为可以使用变量的代码区域。 Python 支持全局变量(可在整个程序中使用)和局部变量。
默认情况下,函数中声明的所有变量都是局部变量。 要访问函数内部的全局变量,必须明确定义“全局变量”。
默认情况下,函数中声明的所有变量都是局部变量。要访问函数内部的全局变量,必须明确定义“全局变量”。
## 示例
下面我们将研究用法 局部变量和作用域。 此 _**不起作用**_
下面我们将研究局部变量和作用域的用法。它**不起作用**
```py
#!/usr/bin/python
......@@ -72,6 +72,6 @@ print(result)
```
如果在代码中的任何位置都可以访问变量,则称为 _**全局变量。**_ 如果仅在作用域内部知道变量,则将其称为 _**局部变量。**_
如果在代码中的任何位置都可以访问变量,则称为**全局变量**。如果仅在作用域内部知道变量,则将其称为**局部变量**
[下载 Python 练习](https://pythonspot.com/download-python-exercises/)
\ No newline at end of file
......@@ -2,9 +2,9 @@
> 原文: [https://pythonspot.com/loops/](https://pythonspot.com/loops/)
可以使用循环来重复代码。 代码行可以重复 N 次,其中 N 是可以手动配置的。 实际上,这意味着将重复执行代码,直到满足条件为止。 此条件通常为(x > = N),但这不是唯一可能的条件。
可以使用循环来重复代码。 代码行可以重复 N 次,其中 N 是可以手动配置的。 实际上,这意味着将重复执行代码,直到满足条件为止。 此条件通常为(`x <= N`),但这不是唯一可能的条件。
Python 有 3 种循环类型:for 循环,while 循环和嵌套循环。
Python 有 3 种循环类型:`for`循环,`while`循环和嵌套循环。
## `for`循环
......@@ -20,11 +20,11 @@ for item in items:
```
for 循环的可视化:
`for`循环的可视化:
![for loop](img/82f73ddadae94db3c7fa209585564d41.jpg)
for 循环也可以重复 N 次:
`for`循环也可以重复 N 次:
```py
#!/usr/bin/python
......
......@@ -2,7 +2,7 @@
> 原文: [https://pythonspot.com/python-range/](https://pythonspot.com/python-range/)
**range()**函数的 return 会生成一个数字序列,从下限到上限。
`range()`函数会生成一个数字序列,从下限到上限。
```py
......@@ -10,11 +10,11 @@ range(lower_bound, upper_bound, step_size)
```
* lower_bound:_ 列表的起始值。_
* `lower_bound`:列表的起始值。
* upper_bound:_ 列表的最大值,不包括此数字。_
* `upper_bound`:列表的最大值,不包括此数字。
* step_bound:_ 步长,列表中每个数字之间的差。_
* `step_bound`:步长,列表中每个数字之间的差。
`lower_bound``step_size`参数是可选的。默认情况下,下限设置为零,增量步长设置为一。参数必须为整数类型,但可以为负。
......@@ -24,11 +24,11 @@ range(lower_bound, upper_bound, step_size)
## 范围实现差异
通常是一个问题。 在 Python 版本中,range()的实现略有不同:
通常是一个问题。 在 Python 版本中,`range()`的实现略有不同:
* Python 2.x: _range()函数返回一个列表。_
* Python 2.x:`range()`函数返回一个列表。
* Python 3.x: _range()函数生成一个序列。_
* Python 3.x:`range()`函数生成一个序列。
## python 2.7 中的范围
......@@ -40,7 +40,7 @@ range(lower_bound, upper_bound, step_size)
```
调用 range(1,10)返回:1,2,3,4,5,6,7,8,9
调用`range(1, 10)`返回:`1,2,3,4,5,6,7,8,9`
```py
......@@ -48,7 +48,7 @@ range(lower_bound, upper_bound, step_size)
```
调用范围(0,10,2)返回:0,2,4,6,8
调用`range(0, 10, 2)`返回:`0,2,4,6,8`
```py
......@@ -56,8 +56,7 @@ range(lower_bound, upper_bound, step_size)
```
python 3 中的**范围**
要使用范围生成列表,请添加列表功能
python 3 中的**范围**。要使用范围生成列表,请添加列表函数。
```py
......@@ -76,8 +75,8 @@ python 3 中的**范围**
## python 2 实现
此版本的 range()分配计算机内存,并在后台填充计算机内存。 对于大范围,这不是很有效的实现。
此版本的`range()`分配计算机内存,并在后台填充计算机内存。 对于大范围,这不是很有效的实现。
通常,range2 的 Python2 实现不会有任何问题,但如果使用大量(数百万个项目),则可能会遇到问题。
通常,`range`的 Python2 实现不会有任何问题,但如果使用大量(数百万个项目),则可能会遇到问题。
[下载 Python 练习](https://pythonspot.com/download-python-exercises/)
\ No newline at end of file
......@@ -2,7 +2,7 @@
> 原文: [https://pythonspot.com/python-tuples/](https://pythonspot.com/python-tuples/)
元组 _ 数据结构 _ 用于存储一组数据。 该组中的元素用逗号分隔。 创建后,元组的值将无法更改。
元组数据结构用于存储一组数据。 该组中的元素用逗号分隔。 创建后,元组的值将无法更改。
## Python 元组
......
......@@ -2,7 +2,7 @@
> 原文: [https://pythonspot.com/python-dictionaries/](https://pythonspot.com/python-dictionaries/)
字典可以看作是 _ 键的无序集合:值 _ 对
字典可以看作是键值对的无序集合
一对大括号创建一个空字典: `{}` 。 每个元素都可以映射到某个值。 整数或字符串可用于索引。 字典没有命令。
......@@ -33,7 +33,7 @@ Non
```
我们绝不限于值部分中的单个单词定义。 演示:
我们绝不限于值部分中的单个单词定义。 演示:
```py
#!/usr/bin/python
......
......@@ -11,9 +11,9 @@ y = "text"
```
它发现 _x 是整数 _ 类型, _y 是字符串 _ 类型。
它发现`x`是整数类型,`y`是字符串类型。
函数接受某种数据类型。 例如,print 仅接受字符串数据类型。
函数接受某种数据类型。 例如,`print`仅接受字符串数据类型。
## 数据类型转换
......@@ -31,9 +31,9 @@ print("y = " + str(y))
```
我们使用 str()函数将变量 x(整数)和变量 y(浮点数)转换为字符串。
我们使用`str()`函数将变量`x`(整数)和变量`y`(浮点数)转换为字符串。
如果我们有要存储为数字的文本怎么办? 我们将不得不再次铸造
如果我们有要存储为数字的文本怎么办? 我们将不得不再次转型
```py
a = "135.31421"
......@@ -44,7 +44,7 @@ print(c)
```
在上面的示例中,我们将两个具有数据类型字符串的变量强制转换为数据类型 float
在上面的示例中,我们将两个具有数据类型字符串的变量强制转换为数据类型`float`
## 转换函数
......
......@@ -2,11 +2,11 @@
> 原文: [https://pythonspot.com/random-numbers/](https://pythonspot.com/random-numbers/)
使用 _ 随机 _ 模块,我们可以生成伪随机数。 函数 random()生成一个介于零和一之间的随机数[0,0.1 .. 1]。 用此模块生成的数字不是真正随机的,但对于大多数用途而言,它们是足够随机的。
使用`random`模块,我们可以生成伪随机数。 函数`random()`生成一个介于零和一之间的随机数`[0, 0.1 .. 1]`。 用此模块生成的数字不是真正随机的,但对于大多数用途而言,它们是足够随机的。
## 介于 0 和 1 之间的随机数。
我们 可以使用以下小代码生成(伪)随机浮点​​数:
我们可以使用以下小代码生成(伪)随机浮点​​数:
```py
from random import *
......@@ -38,7 +38,7 @@ print(x)
## 1 到 10 之间的随机数
要生成 1 到 10 之间的随机 _ 浮点数 _,您可以使用匀速()函数
要生成 1 到 10 之间的随机浮点数,您可以使用`uniform()`函数
```py
from random import *
......
......@@ -31,7 +31,7 @@ for line in content:
代码的第一部分将读取文件内容。 读取的所有行将存储在变量内容中。 第二部分将遍历变量内容中的每一行。
如果您不想读取换行符\ n”,则可以将语句 f.readlines()更改为此:
如果您不想读取换行符`"\n"`,则可以将语句`f.readlines()`更改为此:
```py
content = f.read().splitlines()
......
......@@ -2,9 +2,9 @@
> 原文: [https://pythonspot.com/write-file/](https://pythonspot.com/write-file/)
Python 默认支持写文件,不需要特殊模块。 您可以使用.write()方法以及包含文本数据的参数来写入文件。
Python 默认支持写文件,不需要特殊模块。 您可以使用`.write()`方法以及包含文本数据的参数来写入文件。
在将数据写入文件之前,请调用 open(filename,’w’)函数,其中 filename 包含文件名或文件名的路径。 最后,别忘了关闭文件。
在将数据写入文件之前,请调用`open(filename, 'w')`函数,其中`filename`包含文件名或文件名的路径。 最后,别忘了关闭文件。
## 创建要写入的文件
......@@ -27,7 +27,7 @@ myfile.close()
```
“ w”标志可使 Python 截断该文件(如果已存在)。 也就是说,如果文件内容存在,它将被替换。
`"w"`标志可使 Python 截断该文件(如果已存在)。 也就是说,如果文件内容存在,它将被替换。
## 附加到文件
......
......@@ -6,16 +6,13 @@
技术总是在发展。什么是类,它们从何而来?
**1.语句**
在计算的早期,程序员仅编写命令。
**1\. 语句**:在计算的早期,程序员仅编写命令。
**2.函数**
可重用的语句组,有助于结构化代码并提高了可读性。
**2\. 函数**:可重用的语句组,有助于结构化代码并提高了可读性。
**3.类**
这些类用于创建具有功能和变量的对象。 字符串是对象的示例:字符串书具有功能 book.replace()和 book.lowercase()。 这种样式通常称为面向对象编程。
**3\. 类**:这些类用于创建具有功能和变量的对象。 字符串是对象的示例:字符串书具有功能`book.replace()``book.lowercase()`。这种样式通常称为面向对象编程。
让我们一起潜水吧!
让我们一起深入吧!
## Python 类
......@@ -42,15 +39,15 @@ david.sayHello()
```
运行该程序。 在此代码中,我们有 3 个虚拟对象:james,david 和 eric。 每个对象都是 User 类的实例。
运行该程序。 在此代码中,我们有 3 个虚拟对象:`james``david``eric`。 每个对象都是`User`类的实例。
![python class: creation of objects](img/4915adfc6d1a53dddb74cfc74d45644b.jpg)
Python 类:创建对象
在此类中,我们定义了 sayHello()方法,这就是为什么我们可以为每个对象调用它的原因。 **初始化**()方法被称为**构造函数**,并且在创建对象时始终被调用。 该类拥有的变量在这种情况下为“名称”。 这些变量有时称为类属性。
在此类中,我们定义了`sayHello()`方法,这就是为什么我们可以为每个对象调用它的原因。`__init__()`方法被称为**构造函数**,并且在创建对象时始终被调用。该类拥有的变量在这种情况下为`name`这些变量有时称为类属性。
我们可以在类中创建方法来更新对象的内部变量。 这听起来可能有些含糊,但我将举一个例子进行说明。
我们可以在类中创建方法来更新对象的内部变量。这听起来可能有些含糊,但我将举一个例子进行说明。
## 类变量
......@@ -103,7 +100,7 @@ pythonBean.printState()
```
运行该程序。 代码的顶部定义了我们所描述的类。 下面的代码是我们创建虚拟对象的地方。 在此示例中,我们只有一个对象称为“ pythonBean”。 然后我们调用更改内部变量的方法,这是可能的,因为我们在类中定义了这些方法。 输出:
运行该程序。 代码的顶部定义了我们所描述的类。 下面的代码是我们创建虚拟对象的地方。 在此示例中,我们只有一个对象称为`pythonBean`。 然后我们调用更改内部变量的方法,这是可能的,因为我们在类中定义了这些方法。 输出:
```py
......
......@@ -22,7 +22,7 @@ duck.walk()
```
我们在动物类中创建了一个名为“鸭子”的对象。 该类具有一个可以在每个对象上调用的方法(walk)。 我们还有一个称为 **init** ()的方法,该方法在创建新对象时总是被调用。 每种方法都必须使用 self 关键字。 我们使用类(self.name = ..)设置变量。
我们在动物类中创建了一个名为`duck`的对象。 该类具有一个可以在每个对象上调用的方法(`walk`)。 我们还有一个称为`__init__()`的方法,该方法在创建新对象时总是被调用。 每种方法都必须使用`self`关键字。 我们使用类(`self.name = ..`)设置变量。
![python class](img/cb722e238db4c81d1854b65097d597a9.jpg)
......
......@@ -2,7 +2,7 @@
> 原文: [https://pythonspot.com/encapsulation](https://pythonspot.com/encapsulation)
在面向对象的 python 程序中,您可以 _ 限制对方法和变量的访问 _。 这可以防止意外修改数据,这就是 _ 封装 _。 让我们从一个例子开始。
在面向对象的 python 程序中,您可以限制对方法和变量的访问。这可以防止意外修改数据,这就是封装。 让我们从一个例子开始。
## 私有方法
......@@ -10,7 +10,7 @@
封装。限制访问方法或变量
我们创建了一个 Car 类,它具有两种方法:drive()和 updateSoftware()。 创建汽车对象时,它将调用私有方法 __updateSoftware()
我们创建了一个`Car`类,它具有两种方法:`drive()``updateSoftware()`。创建汽车对象时,它将调用私有方法`__updateSoftware()`
仅在类内部不能直接在对象上调用此函数。
......@@ -44,9 +44,9 @@ driving
封装可以防止意外访问,但不是有意访问。
私有属性和方法并未真正隐藏,而是在其名称的开头加上了 _Car”来重命名。
私有属性和方法并未真正隐藏,而是在其名称的开头加上了`_Car`来重命名。
实际上可以使用 redcar._Car__updateSoftware()调用该方法。
实际上可以使用`redcar._Car__updateSoftware()`调用该方法。
## 私有变量
......
......@@ -12,7 +12,7 @@
根据函数定义,可以使用零个,一个,两个或多个参数来调用它。
这称为 _ 方法重载。_ 并非所有的编程语言都支持方法重载,但是 Python 支持。
这称为方法重载。并非所有的编程语言都支持方法重载,但是 Python 支持。
## 方法重载示例
......@@ -51,7 +51,7 @@ Hello Guido
```
为了澄清 _ 方法的重载 _,我们现在可以通过两种方式调用 sayHello()方法:
为了澄清方法的重载,我们现在可以通过两种方式调用`sayHello()`方法:
```py
obj.sayHello()
......
......@@ -38,11 +38,11 @@ class Programmer(User):
```
除了参数中提供了 User 之外,这看起来非常像标准类。 这意味着可以在 Programmer 类中访问 User 类的所有功能。
除了参数中提供了`User`之外,这看起来非常像标准类。 这意味着可以在`Programmer`类中访问`User`类的所有功能。
## 继承示例
Full example of Python inheritance:
Python 继承的完整示例:
```py
class User:
......@@ -79,6 +79,6 @@ Programming Python
```
Brian 是 User 的实例,只能访问方法 printName。 Diana 是 Programmer 的一个实例,该类是继承自 User 的类,并且可以访问 Programmer 和 User 中的方法。
`Brian``User`的实例,只能访问方法`printName``Diana``Programmer`的一个实例,该类是继承自`User`的类,并且可以访问`Programmer``User`中的方法。
[下载练习](https://pythonspot.com/download-oop-exercises/)
\ No newline at end of file
......@@ -2,7 +2,7 @@
> 原文: [https://pythonspot.com/polymorphism/](https://pythonspot.com/polymorphism/)
有时,对象有多种类型或形式。 如果我们有一个按钮,则有许多不同的绘制输出(圆形按钮,复选按钮,方形按钮,带有图像的按钮),但它们确实共享相同的逻辑:onClick()。 我们使用相同的方法访问它们。 这个想法称为 _ 多态 _
有时,对象有多种类型或形式。 如果我们有一个按钮,则有许多不同的绘制输出(圆形按钮,复选按钮,方形按钮,带有图像的按钮),但它们确实共享相同的逻辑:`onClick()`。 我们使用相同的方法访问它们。 这个想法称为多态
多态是基于希腊语 Poly(许多)和 morphism(形式)。 我们将创建一个可以采用或使用多种形式的对象的结构。
......@@ -42,7 +42,7 @@ Woof woof!
![polymorphism example](img/2c012acbbf068f97276301d4bf125959.jpg)
视觉多态
多态可视化
抽象结构在`Document`类中定义。
......@@ -56,7 +56,7 @@ print document.name + ': ' + document.show()
```
为此,我们创建了一个称为 document 的抽象类。 此类没有任何实现,但是定义了所有形式都必须具有的结构(以功能形式)。 如果我们定义函数 show(),则 PdfDocument 和 WordDocument 都必须具有 show()函数。 完整代码:
为此,我们创建了一个称为`document`的抽象类。 此类没有任何实现,但是定义了所有形式都必须具有的结构(以函数形式)。 如果我们定义函数`show()`,则`PdfDocument``WordDocument`都必须具有`show()`函数。完整代码:
```py
class Document:
......@@ -100,9 +100,9 @@ Document3: Show word contents!
抽象类中的结构,其他类中的实现
另一个例子是拥有一个抽象类 Car,其中包含了 drive()和 stop()结构。
另一个例子是拥有一个抽象类`Car`,其中包含了`drive()``stop()`结构。
我们定义了两个对象 Sportcar 和 Truck,它们都是 Car 的一种形式。 用伪代码我们将要做的是:
我们定义了两个对象`Sportcar``Truck`,它们都是`Car`的一种形式。 用伪代码我们将要做的是:
```py
class Car:
......@@ -119,7 +119,7 @@ class Truck(Car):
```
然后,我们可以访问任何类型的汽车并调用功能,而无需进一步考虑表格是 Sportscar 还是 Truck。 完整代码:
然后,我们可以访问任何类型的汽车并调用函数,而无需进一步考虑表格是 Sportscar 还是 Truck。 完整代码:
```py
class Car:
......
......@@ -36,7 +36,7 @@ talking...
```
在上面的程序中,我们有内部类 Head(),它具有自己的方法。 内部类可以同时具有方法和变量。 在此示例中,类 Human( **init** )的构造函数创建了一个新的 head 对象。
在上面的程序中,我们有内部类`Head()`,它具有自己的方法。内部类可以同时具有方法和变量。在此示例中,类`Human`的构造函数(`__init__`)创建了一个新的`head`对象。
## 多个内部类
......
......@@ -3,7 +3,7 @@
> 原文: [https://pythonspot.com/factory-method/](https://pythonspot.com/factory-method/)
我们可能并不总是知道我们要预先创建什么样的对象。
在用户请求执行后,只能在执行时创建 _ 的某些对象。_
在用户请求执行后,只在执行时创建某些对象。
可能使用**工厂方法**的示例:
......@@ -23,7 +23,7 @@ obj.drive()
```
**关键事实**_ 工厂方法返回(新)对象。_
**关键事实**工厂方法返回(新)对象。
对象的类型取决于您指定的输入字符串的类型。 这种技术还可以使您的程序更容易扩展。 新的程序员可以通过添加新的字符串和类来轻松添加功能,而无需阅读所有源代码。
......
......@@ -11,7 +11,7 @@
您可能需要将一个复杂的问题分解为几个较小的问题。 您已经熟悉[循环或迭代](https://pythonspot.com/loops/)。 在某些情况下,递归可能是更好的解决方案。
在 Python 中,**如果函数调用自身并且具有终止条件**,则该函数是递归的。 为什么要终止条件? 阻止函数自称广告无穷大
在 Python 中,**如果函数调用自身并且具有终止条件**,则该函数是递归的。 为什么要终止条件? 阻止函数无限自我调用
## 递归示例
......@@ -36,7 +36,7 @@ print(sum([5,7,3,8,10]))
```
在我们简单地调用 sum 函数的地方,该函数将每个元素添加到变量 sum 并返回。 递归执行此操作:
在我们简单地调用`sum`函数的地方,该函数将每个元素添加到变量`sum`并返回。 递归执行此操作:
```py
#!/usr/bin/env python
......@@ -51,11 +51,11 @@ print(sum([5,7,3,8,10]))
```
如果列表的长度为 1,则返回列表(终止条件)。 否则,它返回元素,并调用函数 sum()减去列表中的一个元素。 如果执行了所有调用,则返回达到终止条件并返回应答。
如果列表的长度为 1,则返回列表(终止条件)。 否则,它返回元素,并调用函数`sum()`减去列表中的一个元素。 如果执行了所有调用,则返回达到终止条件并返回应答。
## 递归阶乘
阶乘的数学定义是:n! = n *(n-1)!,如果 n &gt; 1 并且 f(1)= 1.示例:3! = 3 x 2 x 1 =6。我们可以使用递归函数在 Python 中实现:
阶乘的数学定义是:`n! = n * (n-1)!`,如果`n > 1`并且`f(1) = 1`。示例:`3! = 3 x 2 x 1 = 6`。我们可以使用递归函数在 Python 中实现:
```py
#!/usr/bin/env python
......@@ -70,7 +70,7 @@ print(factorial(3))
```
调用阶乘函数 n = 3 时。它将返回 n *阶乘(n-1)。 该过程将一直持续到 n =1。如果达到 n == 1,它将返回结果。
调用阶乘函数`n = 3`时。它将返回`n * factorial(n-1)`。 该过程将一直持续到`n = 1`。如果达到`n == 1`,它将返回结果。
## 递归限制
......
......@@ -19,7 +19,7 @@ print stdout
```
process.communicate()调用从进程中读取输入和输出。 stdout 是进程输出。 仅当发生错误时,stderr 才会被写入。 如果要等待程序完成,可以调用 Popen.wait()
`process.communicate()`调用从进程中读取输入和输出。`stdout`是进程输出。仅当发生错误时,`stderr`才会被写入。 如果要等待程序完成,可以调用`Popen.wait()`
## `subprocess.call()`:
......@@ -32,7 +32,7 @@ subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
```
在下面的示例中,完整的命令将为“ ls -l”
在下面的示例中,完整的命令将为`ls -l`
```py
#!/usr/bin/env python
......
......@@ -2,7 +2,8 @@
> 原文: [https://pythonspot.com/threading](https://pythonspot.com/threading)
在 Python 中,您可以使用 Python 2.x 中的`threading`模块或 Python 3 中的 _thread 模块创建线程。我们将使用`threading`模块与之交互。
在 Python 中,您可以使用 Python 2.x 中的`threading`模块或 Python 3 中的`_thread`模块创建线程。我们将使用`threading`模块与之交互。
线程是一种操作系统进程,具有与正常进程不同的功能:
* 线程作为进程的子集存在
......@@ -44,7 +45,7 @@ for x in xrange(10):
```
如果运行一次,线程不必停止。 线程可以是定时的,每 x 秒重复执行一次线程功能。
如果运行一次,线程不必停止。 线程可以是定时的,每`x`秒重复执行一次线程功能。
## 定时线程
......
......@@ -2,7 +2,7 @@
> 原文: [https://pythonspot.com/python-lambda/](https://pythonspot.com/python-lambda/)
我们可以创建匿名函数,称为 lambda 函数。 Lambda 函数与常规 Python 函数不同,它们源自 Lambda 微积分。 它允许您编写非常简短的函数。
我们可以创建匿名函数,称为 lambda 函数。 Lambda 函数与常规 Python 函数不同,它们源自 Lambda 演算。 它允许您编写非常简短的函数。
## Lambda 函数示例
......@@ -16,8 +16,7 @@ print f(3)
```
Lambda 函数从不使用 return 语句,它总是返回
。 Lambda 函数可能包含 if 语句:
Lambda 函数从不使用`return`语句,它总是返回。 Lambda 函数可能包含`if`语句:
```py
#!/usr/bin/env python
......@@ -56,7 +55,7 @@ print(newList)
```
返回列表只包含 lambda 表达式“ lamba x:x%2 == 0”为真的元素。
返回列表只包含 lambda 表达式`lamba x: x % 2 == 0`为真的元素。
## `reduce`函数
......
......@@ -8,7 +8,7 @@ Python 中的集合是对象的集合。 集合在 Python 2.4 和更高版本中
## 集合示例
要创建一个集合,我们使用 set()函数。
要创建一个集合,我们使用`set()`函数。
```py
#!/usr/bin/env python
......@@ -18,7 +18,7 @@ print(x)
```
如果我们多次添加相同的 item 元素,则会将其删除。 一个集合不能多次包含相同的元素。
如果我们多次添加相同的`item`元素,则会将其删除。 一个集合不能多次包含相同的元素。
```py
#!/usr/bin/env python
......
......@@ -38,7 +38,7 @@ print(dir(sys))
可以按照以下步骤创建自己的模块:
创建一个名为 test.py 的文件(您的模块)
创建一个名为`test.py`的文件(您的模块)
```py
#!/usr/bin/env python
......@@ -48,7 +48,7 @@ def add(a,b):
```
然后创建一个名为 app.py 的文件:
然后创建一个名为`app.py`的文件:
```py
from test import *
......
......@@ -14,7 +14,7 @@ Python 没有图数据类型。 要使用图,我们可以使用模块,也可
* 自己实现图
* networkx 模块
* `networkx`模块
## Python 中的图
......@@ -32,9 +32,9 @@ print(graph)
```
## 使用 networkx 的图
## 使用`networkx`的图
networkx 软件模块支持创建,处理图。
`networkx`软件模块支持创建,处理图。
```py
#!/usr/bin/env python
......
......@@ -4,7 +4,7 @@
![binary numbers ](img/74c0efc42f7bf310489f953f2b5cbd0e.jpg)
我们之前已经看过简单的数字和运算。 在本文中,您将学习数字在计算机内部的工作方式以及与此相关的一些魔术-)
我们之前已经看过简单的数字和运算。 在本文中,您将学习数字在计算机内部的工作方式以及与此相关的一些魔术 :-)
更详细:虽然这在 Web 应用程序或大多数桌面应用程序中没有直接用处,但了解它非常有用。
......@@ -16,7 +16,7 @@
这些微小的信息,是您可以在计算机中存储的最小信息,称为位。我们将位表示为低(0)或高(1)。
为了表示大于1的数字,使用一系列位的主意诞生了。 一个八位的序列可以存储更大的数字,这称为字节。 由一和零组成的序列称为二进制。我们传统的十位数计数系统称为十进制。
为了表示大于 1 的数字,使用一系列位的主意诞生了。 一个八位的序列可以存储更大的数字,这称为字节。 由一和零组成的序列称为二进制。我们传统的十位数计数系统称为十进制。
![binary](img/74c0efc42f7bf310489f953f2b5cbd0e.jpg)
......@@ -62,7 +62,7 @@ _ 二进制左移和二进制右移 _
| 0 | 1 个 | 0 | 1 个 |
| 1 个 | 0 | 1 个 | 0 |
在移位(0,1,0,1)之前,我们有数字 5。 移位(1,0,1,0)后,我们得到数字 10。在 python 中,您可以使用按位向左运算符(&lt; &lt;)向左移动,按位向右运算符(&gt; &gt;) 向右移动。
在移位(`0,1,0,1`)之前,我们有数字 5。 移位(`1,0,1,0`)后,我们得到数字 10。在 python 中,您可以使用按位向左运算符(`<<`)向左移动,按位向右运算符(`>>`) 向右移动。
```py
inputA = int('0101',2)
......@@ -90,7 +90,7 @@ After shifting in decimal: 10
按位 AND
在代码中,这就像使用&符号一样简单,该符号代表逻辑 AND 运算符。
在代码中,这就像使用`&`符号一样简单,该符号代表逻辑 AND 运算符。
```py
# This code will execute a bitwise logical AND. Both inputA and inputB are bits.
......@@ -165,7 +165,7 @@ print bin(inputA | inputB) # Execute bitwise logical OR and print result in bi
按位 XOR
为了执行它,我们使用^运算符。 可以像这样简单地执行一系列位:
为了执行它,我们使用`^`运算符。 可以像这样简单地执行一系列位:
```py
inputA = int('00100011',2) # define binary number
......
......@@ -39,7 +39,10 @@ print(name)
```
要测试您的版本,请执行以下操作:
_python –version_
```
python –version
```
## 字符串比较
......@@ -56,7 +59,7 @@ if q == sentence:
```
要测试两个字符串是否相等,请使用 inequality 运算符(!=
要测试两个字符串是否相等,请使用不等运算符(`!=`
```py
#!/usr/bin/python
......
......@@ -4,7 +4,7 @@
我们可以使用调试工具来最小化和发现错误。 在本文中,您将学习最佳的 Python 调试技巧。
## PuDB-基于控制台的 Python 调试器
## PuDB - 基于控制台的 Python 调试器
![python-debugging-pudb](img/be30d3c5aa2158a9864d173116eb6291.jpg)
......@@ -42,19 +42,19 @@ $ pudb3 program.py
(或 sudo(如果您没有正确的权限))
您可以逐步完成该程序。 使用 **n** 键逐步执行该程序。 当前变量内容显示在右上方。
您可以逐步完成该程序。 使用`n`键逐步执行该程序。 当前变量内容显示在右上方。
![pudb-debug](img/224bd2a6a881437fdda6c2509430673e.jpg)
python 调试
您可以使用 **b** 键设置断点。 要继续执行直到下一个断点,请按 **c** 键。
您可以使用`b`键设置断点。 要继续执行直到下一个断点,请按`c`键。
![python-breakpoint](img/b4dc9a1dbd2f3dbfa9b8223a63b62c12.jpg)
Python 程序中的断点
## PDB-Python 调试器
## PDB - Python 调试器
`pdb`模块支持设置断点。 断点是程序的有意暂停。 您可以在其中获取有关程序状态的更多信息。
......@@ -83,7 +83,7 @@ pdb.set_trace()
```
我们在该程序中插入了一些断点。 程序将在每个断点处暂停( **pdb.set_trace()**)。 要查看变量内容,只需键入变量名称:
我们在该程序中插入了一些断点。 程序将在每个断点处暂停(`pdb.set_trace()`)。 要查看变量内容,只需键入变量名称:
```py
......@@ -98,7 +98,7 @@ $ python3 program.py
```
**c** **继续**继续执行程序,直到下一个断点
`c`**继续**继续执行程序,直到下一个断点
```py
......
......@@ -21,7 +21,7 @@ with open('persons.csv', 'wb') as csvfile:
```
运行此代码将为我们提供以下内容的 filpeople.csv
运行此代码将为我们提供以下内容的`filpeople.csv`
```py
Name,Profession
......@@ -31,11 +31,11 @@ Paul,Manager
```
您可以在您喜欢的 Office 程序中导入 person.csv 文件。
您可以在您喜欢的 Office 程序中导入`person.csv`文件。
![python csv](img/f177725bc03d4c71b4a00e1334990e57.jpg)
Spreadsheet file created in Python
用 Python 创建的电子表格文件
## 读取电子表格文件(csv)
......@@ -64,7 +64,7 @@ with open('persons.csv', 'rb') as f:
```
也许您想将其存储到 Python 列表中。 我们从 csv 文件中获取数据,然后将其存储到 Python 列表中。 我们使用 if 语句跳过标题,因为它不属于列表。 完整代码:
也许您想将其存储到 Python 列表中。 我们从 csv 文件中获取数据,然后将其存储到 Python 列表中。 我们使用`if`语句跳过标题,因为它不属于列表。 完整代码:
```py
import csv
......@@ -102,5 +102,5 @@ print jobs
```
大多数电子表格或 Office 程序都可以导出 csv 文件,因此我们建议您创建任何类型的 csv 文件并进行处理:-)
大多数电子表格或 Office 程序都可以导出 csv 文件,因此我们建议您创建任何类型的 csv 文件并进行处理 :-)
......@@ -10,7 +10,7 @@
Python 为字符串的字符建立索引,每个索引都与一个唯一字符相关联。 例如,字符串`"python"`中的字符具有索引:
![String](img/9faa714fe3700fc2441dae01484b73c3.jpg) &lt;/picture&gt;](/wp-content/uploads/2016/03/python-string.png)
![String](img/9faa714fe3700fc2441dae01484b73c3.jpg)
字符串编号
......@@ -37,7 +37,7 @@ s[ startIndex : pastIndex ]
```
startIndex 是字符串的起始索引。 pastIndex 是切片末尾的 1。
`startIndex`是字符串的起始索引。`pastIndex`是切片末尾加 1。
如果省略第一个索引,则切片将从头开始。 如果省略最后一个索引,则切片将转到字符串的末尾。 例如:
......
......@@ -10,11 +10,11 @@ Python 中的变量(`x`,`y`,`z`)。它们可以稍后在程序中使用
数字可以是以下数据类型之一:
* 整数 _(1,2,3,4)_
* 整数`1,2,3,4`
* 浮点 _(点后面的数字)_
* 浮点(点后面的数字)
* 布尔值 _(对或错)_
* 布尔值(真或假)
## 数值变量示例
......@@ -27,7 +27,7 @@ z = True
```
您可以使用 print()函数将它们输出到屏幕上。
您可以使用`print()`函数将它们输出到屏幕上。
```py
x = 1
......@@ -40,7 +40,7 @@ print(z)
```
Python 支持算术运算,例如加法(+),乘法(*),除法(/)和减法(-)。
Python 支持算术运算,例如加法(`+`),乘法(`*`),除法(`/`)和减法(`-`)。
```py
#!/usr/bin/env python
......@@ -73,8 +73,9 @@ print(sum)
```
**Python 2** (旧版本)
您也可以使用 _raw_input_ 函数要求用户输入:
## Python 2 (旧版本)
您也可以使用`raw_input`函数要求用户输入:
```py
#!/usr/bin/env python
......
......@@ -52,7 +52,7 @@ print(l) # prints all elements
```
如果要按降序排列列表,只需使用 reverse()函数。
如果要按降序排列列表,只需使用`reverse()`函数。
```py
#!/usr/bin/python
......
......@@ -2,8 +2,7 @@
> 原文: [https://pythonspot.com/if-statements/](https://pythonspot.com/if-statements/)
在 Python 中,您可以定义条件语句,称为 if 语句。
如果满足某些条件,则将执行代码块。
在 Python 中,您可以定义条件语句,称为`if`语句。如果满足某些条件,则将执行代码块。
## `if`语句
......@@ -21,7 +20,7 @@ else:
```
如果将 x 设置为大于 10,它将执行第二个代码块。 我们使用缩进(4 个空格)定义块。
如果将`x`设置为大于 10,它将执行第二个代码块。 我们使用缩进(4 个空格)定义块。
## 一个小游戏:
......@@ -66,7 +65,7 @@ if a > 10:
```
考虑结合 4 或 6 个条件,这可能很快变得难以阅读。 幸运的是,Python 有一个解决方案,我们可以使用 _ 和 _ 关键字组合条件。
考虑结合 4 或 6 个条件,这可能很快变得难以阅读。 幸运的是,Python 有一个解决方案,我们可以使用`and`关键字组合条件。
```py
guess = 24
......@@ -77,6 +76,6 @@ else:
```
有时您可能想使用 _ 或 _ 运算符。
有时您可能想使用`or`运算符。
[下载 Python 练习](https://pythonspot.com/download-python-exercises/)
\ No newline at end of file
......@@ -17,7 +17,7 @@ def function(parameters):
```
**def 关键字**告诉 Python 我们有一段可重用的代码(一个函数)。 一个程序可以具有许多函数。
**`def`关键字**告诉 Python 我们有一段可重用的代码(一个函数)。 一个程序可以具有许多函数。
## 实际例子
......@@ -40,7 +40,7 @@ print(f(3))
```
该函数具有一个参数 x。 返回值是函数返回的值。 并非所有函数都必须返回某些内容。
该函数具有一个参数`x`。 返回值是函数返回的值。 并非所有函数都必须返回某些内容。
## 参数
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册