提交 720aaefc 编写于 作者: W wizardforcel

2020-07-11 11:53:15

上级 aefb999a
......@@ -95,7 +95,7 @@ a()
Hello
```
`a`可以使用相同的名称,我们可以使用该名称来调用该功能
`a`可以使用相同的名称,我们可以使用该名称来调用该函数
* * *
......@@ -111,11 +111,11 @@ Hello
当我们启动 Python 解释器时,将创建一个包含所有内置名称的名称空间,并且只要该解释器运行,该名称空间就会存在。
这就是为什么内置`id()``print()`功能始终可以从程序的任何部分使用的原因。 每个[模块](https://www.programiz.com/python-programming/modules)创建其自己的全局名称空间。
这就是为什么内置`id()``print()`函数始终可以从程序的任何部分使用的原因。 每个[模块](https://www.programiz.com/python-programming/modules)创建其自己的全局名称空间。
这些不同的名称空间是隔离的。 因此,不同模块中可能存在的相同名称不会冲突。
模块可以具有各种功能和类。 调用函数时会创建一个本地名称空间,该名称空间中定义了所有名称。 与类相似。 下图可能有助于阐明这一概念。
模块可以具有各种函数和类。 调用函数时会创建一个本地名称空间,该名称空间中定义了所有名称。 与类相似。 下图可能有助于阐明这一概念。
![Nested Namespaces in Python Programming](img/ff842860b03567ecdbc3206f0d184539.png "Different Nested Namespaces")
......
......@@ -63,7 +63,7 @@ The sum is 48
此函数不会将所有值存储在内存中; 这将是低效的。 因此它会记住开始,停止,步长并在旅途中生成下一个数字。
要强制此功能输出所有项目,我们可以使用函数`list()`
要强制此函数输出所有项目,我们可以使用函数`list()`
以下示例将阐明这一点。
......
......@@ -8,7 +8,7 @@
在 Python 中,函数是一组执行特定任务的相关语句。
函数有助于将我们的程序分解为较小的模块化块。 随着我们的计划变得越来越大,功能使其变得更有组织性和可管理性。
函数有助于将我们的程序分解为较小的模块化块。 随着我们的计划变得越来越大,函数使其变得更有组织性和可管理性。
此外,它避免了重复并使代码可重复使用。
......@@ -20,10 +20,10 @@ def function_name(parameters):
statement(s)
```
上面显示的是由以下组件组成的功能定义。
上面显示的是由以下组件组成的函数定义。
1. 关键字`def`,用于标记函数头的开始。
2. 用于唯一标识功能的功能名称。 函数命名遵循相同的[规则,即在 Python](/python-programming/keywords-identifier#rules) 中编写标识符。
2. 用于唯一标识函数的函数名称。 函数命名遵循相同的[规则,即在 Python](/python-programming/keywords-identifier#rules) 中编写标识符。
3. 通过其将值传递给函数的参数(参数)。 它们是可选的。
4. 冒号(`:`)标记函数头的结尾。
5. 可选的文档字符串(docstring),用于描述函数的功能。
......
......@@ -8,7 +8,7 @@
在 Python 中,匿名函数是[函数](/python-programming/function),其定义时没有名称。
使用 Python 中的`def`关键字定义普通功能时,使用`lambda`关键字定义匿名功能
使用 Python 中的`def`关键字定义普通函数时,使用`lambda`关键字定义匿名函数
因此,匿名函数也称为 lambda 函数。
......@@ -47,7 +47,7 @@ print(double(5))
在上述程序中,`lambda x: x * 2`是 lambda 函数。 这里`x`是自变量,`x * 2`是要求值并返回的表达式。
功能没有名称。 它返回分配给标识符`double`的功能对象。 现在我们可以将其称为常规函数。 该声明
函数没有名称。 它返回分配给标识符`double`的函数对象。 现在我们可以将其称为常规函数。 该声明
```py
double = lambda x: x * 2
......
......@@ -41,9 +41,9 @@ def add(a, b):
>>> import example
```
这不会直接在当前符号表中导入在`example`中定义的功能的名称。 它仅在此处导入模块名称`example`
这不会直接在当前符号表中导入在`example`中定义的函数的名称。 它仅在此处导入模块名称`example`
使用模块名称,我们可以使用点`.`运算符访问该功能。 例如:
使用模块名称,我们可以使用点`.`运算符访问该函数。 例如:
```py
>>> example.add(4,5.5)
......
......@@ -86,7 +86,7 @@ print(0o15)
我们可以在上面看到 1(整数)被强制转换为 1.0(浮点数)以进行加法,结果也是一个浮点数。
我们还可以使用`int()``float()``complex()`之类的内置函数在类型之间进行显式转换。 这些功能甚至可以从[字符串](/python-programming/string)转换。
我们还可以使用`int()``float()``complex()`之类的内置函数在类型之间进行显式转换。 这些函数甚至可以从[字符串](/python-programming/string)转换。
```py
>>> int(2.3)
......@@ -284,7 +284,7 @@ print(math.factorial(6))
720
```
这是 [Python 数学模块](/python-programming/modules/math)中可用的功能和属性的完整列表。
这是 [Python 数学模块](/python-programming/modules/math)中可用的函数和属性的完整列表。
```py
import random
......@@ -315,4 +315,4 @@ e
0.5682821194654443
```
这是 [Python `random`模块](/python-programming/modules/random)中可用的功能和属性的完整列表。
\ No newline at end of file
这是 [Python `random`模块](/python-programming/modules/random)中可用的函数和属性的完整列表。
\ No newline at end of file
......@@ -245,7 +245,7 @@ Selling Price: 1000
我们使用`__init__()`方法存储`Computer`的最高售价。 我们试图修改价格。 但是,我们无法更改它,因为 Python 将`__maxprice`视为私有属性。
如图所示,要更改该值,我们必须使用设置器功能,即`setMaxPrice()`,该功能将价格作为参数。
如图所示,要更改该值,我们必须使用设置器函数,即`setMaxPrice()`,该函数将价格作为参数。
* * *
......
......@@ -76,7 +76,7 @@ This is a person class
这将创建一个名为`harry`的新对象实例。 我们可以使用对象名称前缀访问对象的属性。
属性可以是数据或方法。 对象的方法是该类的相应功能
属性可以是数据或方法。 对象的方法是该类的相应函数
这意味着,由于`Person.greet`是函数对象(类的属性),因此`Person.greet`将是方法对象。
......@@ -128,7 +128,7 @@ Hello
一个特别有趣的是`__init__()`函数。 每当实例化该类的新对象时,都会调用此特殊函数。
这种类型的功能在面向对象编程(OOP)中也称为构造器。 我们通常使用它来初始化所有变量。
这种类型的函数在面向对象编程(OOP)中也称为构造器。 我们通常使用它来初始化所有变量。
```py
class ComplexNumber:
......@@ -170,7 +170,7 @@ Traceback (most recent call last):
AttributeError: 'ComplexNumber' object has no attribute 'attr'
```
在上面的示例中,我们定义了一个新类来表示复数。 它具有两个功能`__init__()`初始化变量(默认为零),`get_data()`正确显示数字。
在上面的示例中,我们定义了一个新类来表示复数。 它具有两个函数`__init__()`初始化变量(默认为零),`get_data()`正确显示数字。
在上面的步骤中要注意的一件有趣的事情是,可以动态创建对象的属性。 我们为对象`num2`创建了一个新属性`attr`,并且也读取了该属性。 但这不会为对象`num1`创建该属性。
......
......@@ -34,7 +34,7 @@ TypeError: unsupported operand type(s) for +: 'Point' and 'Point'
在这里,我们可以看到出现了`TypeError`,因为 Python 不知道如何将两个`Point`对象加在一起。
但是,我们可以通过运算符重载在 Python 中完成此任务。 但是首先,让我们对特殊功能有所了解。
但是,我们可以通过运算符重载在 Python 中完成此任务。 但是首先,让我们对特殊函数有所了解。
* * *
......@@ -44,9 +44,9 @@ TypeError: unsupported operand type(s) for +: 'Point' and 'Point'
这些函数不是我们为类定义的典型函数。 我们上面定义的`__init__()`函数就是其中之一。 每次我们创建该类的新对象时都会调用它。
Python 中还有许多其他特殊功能。 访问 [Python 特殊功能](http://docs.python.org/3/reference/datamodel.html#special-method-names)了解有关它们的更多信息。
Python 中还有许多其他特殊函数。 访问 [Python 特殊函数](http://docs.python.org/3/reference/datamodel.html#special-method-names)了解有关它们的更多信息。
使用特殊功能,我们可以使我们的类与内置函数兼容。
使用特殊函数,我们可以使我们的类与内置函数兼容。
```py
>>> p1 = Point(2,3)
......@@ -97,7 +97,7 @@ print(p1)
'(2,3)'
```
因此,当您使用`str(p1)``format(p1)`时,Python 内部会调用`p1.__str__()`方法。 因此得名,特殊功能
因此,当您使用`str(p1)``format(p1)`时,Python 内部会调用`p1.__str__()`方法。 因此得名,特殊函数
现在让我们回到操作符重载。
......@@ -152,7 +152,7 @@ print(p1+p2)
实际发生的是,当您使用`p1 + p2`时,Python 会调用`p1.__add__(p2)`,而后者依次为`Point.__add__(p1,p2)`。 此后,将按照我们指定的方式执行加法运算。
同样,我们也可以重载其他运算符。 我们需要实现的特殊功能列表如下。
同样,我们也可以重载其他运算符。 我们需要实现的特殊函数列表如下。
| 运算符 | 表达式 | 内部 |
| --- | --- | --- |
......@@ -213,7 +213,7 @@ False
False
```
类似地,下面列出了我们需要实现以重载其他比较运算符的特殊功能
类似地,下面列出了我们需要实现以重载其他比较运算符的特殊函数
| 运算符 | 表达式 | 内部 |
| --- | --- | --- |
......
......@@ -136,7 +136,7 @@ This is printed at last
上面的例子用处不大,我们研究它只是为了了解背景中发生的事情。
通常,生成器功能通过具有合适终止条件的循环来实现。
通常,生成器函数通过具有合适终止条件的循环来实现。
让我们以反转字符串的生成器为例。
......
......@@ -85,7 +85,7 @@ Traceback (most recent call last):
NameError: name 'print_msg' is not defined
```
在这里,即使删除原始功能,返回的功能仍然可以使用。
在这里,即使删除原始函数,返回的函数仍然可以使用。
* * *
......
......@@ -6,7 +6,7 @@
## Python 中的装饰器
Python 有一个有趣的功能,称为**装饰器**,可为现有代码添加功能。
Python 有一个有趣的函数,称为**装饰器**,可为现有代码添加功能。
这也称为**元编程**,因为程序的一部分试图在编译时修改程序的另一部分。
......@@ -16,7 +16,7 @@ Python 有一个有趣的功能,称为**装饰器**,可为现有代码添加
为了了解装饰器,我们必须首先了解 Python 的一些基本知识。
我们必须对以下事实感到满意:Python 中的所有内容(是!甚至是类)都是[对象](/python-programming/class)。 我们定义的名称只是绑定到这些对象的标识符。 [函数](/python-programming/function)也不例外,它们也是对象(带有属性)。 各种不同的名称可以绑定到同一功能对象。
我们必须对以下事实感到满意:Python 中的所有内容(是!甚至是类)都是[对象](/python-programming/class)。 我们定义的名称只是绑定到这些对象的标识符。 [函数](/python-programming/function)也不例外,它们也是对象(带有属性)。 各种不同的名称可以绑定到同一函数对象。
这是一个例子。
......@@ -37,15 +37,15 @@ Hello
Hello
```
当您运行代码时,两个函数`first``second`给出相同的输出。 在这里,名称`first``second`指的是同一功能对象。
当您运行代码时,两个函数`first``second`给出相同的输出。 在这里,名称`first``second`指的是同一函数对象。
现在事情开始变得怪异了。
可以将函数作为参数传递给另一个函数。
如果您在 Python 中使用过`map``filter``reduce`之类的功能,那么您已经知道这一点。
如果您在 Python 中使用过`map``filter``reduce`之类的函数,那么您已经知道这一点。
将其他函数作为参数的此类函数也称为**高阶函数**。 这是这种功能的一个例子。
将其他函数作为参数的此类函数也称为**高阶函数**。 这是这种函数的一个例子。
```py
def inc(x):
......@@ -173,7 +173,7 @@ def divide(a, b):
return a/b
```
功能具有两个参数,`a``b`。 我们知道,如果我们将`b`传递为 0,将会产生错误。
函数具有两个参数,`a``b`。 我们知道,如果我们将`b`传递为 0,将会产生错误。
```py
>>> divide(2,5)
......@@ -234,7 +234,7 @@ def works_for_all(func):
可以在 Python 中链接多个装饰器。
这就是说,一个功能可以用不同(或相同)的装饰器多次装饰。 我们只需将装饰器放置在所需功能之上。
这就是说,一个函数可以用不同(或相同)的装饰器多次装饰。 我们只需将装饰器放置在所需函数之上。
```py
def star(func):
......
......@@ -43,7 +43,7 @@ else:
* * *
`re`模块中定义了其他一些功能,可与 RegEx 一起使用。 在探讨之前,让我们学习正则表达式本身。
`re`模块中定义了其他一些函数,可与 RegEx 一起使用。 在探讨之前,让我们学习正则表达式本身。
如果您已经了解 RegEx 的基础知识,请跳至 [Python RegEx](#python-regex)
......
......@@ -2,9 +2,9 @@
> 原文: [https://www.programiz.com/python-programming/time](https://www.programiz.com/python-programming/time)
#### 在本文中,我们将详细探讨时间模块。 通过示例,我们将学习使用在时间模块中定义的与时间相关的不同功能
#### 在本文中,我们将详细探讨时间模块。 通过示例,我们将学习使用在时间模块中定义的与时间相关的不同函数
Python 有一个名为`time`的模块来处理与时间有关的任务。 要使用模块中定义的功能,我们需要首先导入模块。 这是如何做:
Python 有一个名为`time`的模块来处理与时间有关的任务。 要使用模块中定义的函数,我们需要首先导入模块。 这是如何做:
```py
import time
......@@ -12,7 +12,7 @@ import time
* * *
这是常用的时间相关功能
这是常用的时间相关函数
### Python `time.time()`
......@@ -71,7 +71,7 @@ print("This is printed after 2.4 seconds.")
## `time.struct_time`类别
`time`模块中的某些功能,例如`gmtime()``asctime()`等,都可以将`time.struct_time`对象作为参数或将其返回。
`time`模块中的某些函数,例如`gmtime()``asctime()`等,都可以将`time.struct_time`对象作为参数或将其返回。
这是`time.struct_time`对象的示例。
......
......@@ -4,7 +4,7 @@
#### `sleep()`函数在给定的秒数内挂起(等待)当前线程的执行。
Python 有一个名为[`time`](/python-programming/time "Python time Module")的模块,该模块提供了一些有用的功能来处理与时间有关的任务。 其中最流行的功能之一是`sleep()`
Python 有一个名为[`time`](/python-programming/time "Python time Module")的模块,该模块提供了一些有用的函数来处理与时间有关的任务。 其中最流行的函数之一是`sleep()`
`sleep()`函数在给定的秒数内暂停当前线程的执行。
......
......@@ -11,7 +11,7 @@
* * *
要在 Python 中生成随机数,请使用`randint()`函数。 此功能[`random`模块](https://docs.python.org/3.6/library/random.html "Generate pseudo-random numbers")中定义。
要在 Python 中生成随机数,请使用`randint()`函数。 此函数[`random`模块](https://docs.python.org/3.6/library/random.html "Generate pseudo-random numbers")中定义。
* * *
......
......@@ -183,7 +183,7 @@ print(math.pi)
3.141592653589793
```
现在`math`模块内的所有定义在我们的范围内可用。 我们还可以仅使用`from`关键字导入一些特定的属性和功能。 例如:
现在`math`模块内的所有定义在我们的范围内可用。 我们还可以仅使用`from`关键字导入一些特定的属性和函数。 例如:
```py
>>> from math import pi
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册