update Inner Classes and Functions

This commit is contained in:
chiebot_hq
2020-10-28 11:58:26 +08:00
parent 41c01273fd
commit 0cea39ac0e

View File

@@ -44,7 +44,7 @@ Lint
其他消除这个告警的方法还有使用`_`标志未使用参数,或者给这些参数名加上前缀 ``unused_``, 或者直接把它们绑定到 ``_``.但这些方法都不推荐.
导入
导入(imports)
--------------------
.. tip::
@@ -80,7 +80,7 @@ Lint
导入 ``typing```six.moves <https://six.readthedocs.io/#module-six.moves>`_ 模块时可以例外.
(Packages)
--------------------
.. tip::
@@ -126,7 +126,7 @@ Lint
不应假定主入口脚本所在的目录就在 `sys.path` 中,虽然这种情况是存在的。当主入口脚本所在目录不在 `sys.path` 中时,代码将假设 `import jodie` 是导入的一个第三方库或者是一个名为 `jodie` 的顶层包,而不是本地的 `jodie.py`
异常
异常(Exceptions)
--------------------
.. tip::
@@ -196,7 +196,7 @@ Lint
#. 尽量减少try/except块中的代码量. try块的体积越大, 期望之外的异常就越容易被触发. 这种情况下, try/except块将隐藏真正的错误.
#. 使用finally子句来执行那些无论try块中有没有异常都应该被执行的代码. 这对于清理资源常常很有用, 例如关闭文件.
全局变量
全局变量(Global variables)
--------------------
.. tip::
@@ -221,19 +221,19 @@ Lint
------------------------
.. tip::
鼓励使用嵌套/本地/内部类或函数
使用内部类或者嵌套函数可以用来覆盖某些局部变量.
定义:
类可以定义在方法, 函数或者类中. 函数可以定义在方法或函数中. 封闭区间中定义的变量对嵌套函数是只读的.
类可以定义在方法, 函数或者类中. 函数可以定义在方法或函数中. 封闭区间中定义的变量对嵌套函数是只读的. (译者注:即内嵌函数可以读外部函数中定义的变量,但是无法改写,除非使用 `nonlocal`)
优点:
允许定义仅用于有效范围的工具类和函数.
允许定义仅用于有效范围的工具类和函数.在装饰器中比较常用.
缺点:
嵌套类或局部类的实例不能序列化(pickled).
嵌套类或局部类的实例不能序列化(pickled). 内嵌的函数和类无法直接测试.同时内嵌函数和类会使外部函数的可读性变差.
结论:
推荐使用.
使用内部类或者内嵌函数可以忽视一些警告.但是应该避免使用内嵌函数或类,除非是想覆盖某些值.若想对模块的用户隐藏某个函数,不要采用嵌套它来隐藏,应该在需要被隐藏的方法的模块级名称加 ``_`` 前缀,这样它依然是可以被测试的.
列表推导(List Comprehensions)
--------------------------------