提交 62963f26 编写于 作者: W wizardforcel

2020-07-08 13:56:00

上级 acafce9c
......@@ -10,7 +10,7 @@
相似的文件保存在同一目录中,例如,我们可以将所有歌曲保留在“**音乐**”目录中。 与此类似,Python 具有用于目录的软件包和用于文件的[模块](/python-programming/modules)
随着我们的应用程序中包含许多模块的程序变得越来越大,我们将相似的模块放在一个程序包中,而将不同的模块放在不同的程序包中。 这使项目(程序)易于管理且概念清晰。
随着我们的应用中包含许多模块的程序变得越来越大,我们将相似的模块放在一个程序包中,而将不同的模块放在不同的程序包中。 这使项目(程序)易于管理且概念清晰。
同样,由于目录可以包含子目录和文件,因此 Python 程序包可以具有子程序包和模块。
......
......@@ -173,9 +173,9 @@ print(D('1.2') * D('2.50'))
在以下情况下,我们通常使用十进制。
* 当我们进行需要精确十进制表示的金融应用程序时。
* 当我们编程需要精确表示十进制的金融应用时。
* 当我们要控制所需的精度水平时。
* 当我们想实现小数位有效的概念时。
* 当我们想实现有效小数位的概念时。
* * *
......
......@@ -72,7 +72,7 @@ Running Python on the Command Line
我们可以使用任何文本编辑软件来编写 Python 脚本文件。
我们只需要将其保存为`.py`扩展名即可。 但是使用 IDE 可以使我们的生活更加轻松。 IDE 是一款软件,可为程序员提供有用的功能,如代码提示,语法突出显示和检查,文件浏览器等,以供应用程序开发。
我们只需要将其保存为`.py`扩展名即可。 但是使用 IDE 可以使我们的生活更加轻松。 IDE 是一款软件,可为程序员提供有用的功能,如代码提示,语法突出显示和检查,文件浏览器等,以供应用开发。
顺便说一句,当您安装 Python 时,还将安装一个名为 **IDLE** 的 IDE。 您可以使用它在计算机上运行 Python。 对于初学者来说,这是一个不错的 IDE。
......
......@@ -8,7 +8,7 @@
在了解什么是闭包之前,我们必须首先了解什么是嵌套函数和非局部变量。
在另一个函数内部定义的函数称为嵌套函数。 嵌套函数可以访问封闭范围的变量。
在另一个函数内部定义的函数称为嵌套函数。 嵌套函数可以访问定义范围的变量。
在 Python 中,默认情况下,这些非局部变量是只读的,我们必须将它们明确声明为非局部变量(使用[`nonlocal`关键字](/python-programming/keyword-list#nonlocal))才能进行修改。
......@@ -35,7 +35,7 @@ print_msg("Hello")
Hello
```
我们可以看到嵌套`printer()`函数能够访问封闭函数的非本地`msg`变量。
我们可以看到嵌套`printer()`函数能够访问外层函数的非本地`msg`变量。
* * *
......@@ -71,7 +71,7 @@ Hello
这种将某些数据(在这种情况下为`"Hello`)附加到代码的技术在 Python 中称为**闭包**
即使变量超出范围或函数本身已从当前名称空间中删除,也将记住封闭范围中的该值。
即使变量超出范围或函数本身已从当前名称空间中删除,也将记住定义范围中的该值。
尝试在 Python Shell 中运行以下命令以查看输出。
......@@ -89,15 +89,15 @@ NameError: name 'print_msg' is not defined
* * *
## 我们什么时候关闭
## 什么时候拥有闭包
从上面的示例可以看出,当嵌套函数在其封闭范围内引用一个值时,在 Python 中会有一个封闭
从上面的示例可以看出,当嵌套函数在其定义范围内引用一个值时,在 Python 中会有一个闭包
以下几点总结了在 Python 中创建闭包必须满足的条件。
* 我们必须有一个嵌套函数(函数在函数内部)。
* 嵌套函数必须引用在封闭函数中定义的值。
* 封闭函数必须返回嵌套函数。
* 嵌套函数必须引用在外层函数中定义的值。
* 外层函数必须返回嵌套函数。
* * *
......@@ -143,7 +143,7 @@ print(times5(times3(2)))
[Python 装饰器](/python-programming/decorator)也广泛使用了闭包。
最后,最好指出可以发现封闭函数中包含的值。
最后,最好指出可以发现外层函数中包含的值。
所有函数对象都具有`__closure__`属性,如果它是闭包函数,则该属性返回单元格对象的元组。 参考上面的示例,我们知道`times3``times5`是闭包函数。
......
......@@ -293,9 +293,9 @@ property(fget=None, fset=None, fdel=None, doc=None)
哪里,
* `fget`是获取属性值的功能
* `fset`用于设置属性值的功能
* `fdel`具有删除属性的功能
* `fget`是获取属性值的函数
* `fset`是设置属性值的函数
* `fdel`是删除属性的函数
* `doc`是一个字符串(如注释)
从实现中可以看出,这些函数参数是可选的。 因此,可以简单地如下创建属性对象。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册