【发布时间】:2016-12-26 22:15:57
【问题描述】:
“Dunder”的定义(Double underscore):http://www.urbandictionary.com/define.php?term=Dunder
根据 Python 代码中模块级“dunders”(如__all__、__version__、__author__ 等)的位置,我有一个问题。
在阅读PEP8 并看到this Stack Overflow 问题时,我想到了这个问题。
接受的答案是:
__author__是一个全局“变量”,因此应该出现在导入的下方。
但在 PEP8 部分 Module level dunder names 我读到以下内容:
模块级别的“dunders”(即具有两个前导和两个尾随的名称 下划线)如
__all__、__author__、__version__等应该 放置在模块文档字符串之后但在任何导入语句之前 除了__future__进口。 Python 要求未来导入 必须出现在模块中除文档字符串之外的任何其他代码之前。
作者还给出了一个代码示例:
"""This is the example module.
This module does stuff.
"""
from __future__ import barry_as_FLUFL
__all__ = ['a', 'b', 'c']
__version__ = '0.1'
__author__ = 'Cardinal Biggles'
import os
import sys
但是当我将上述内容放入 PyCharm 时,我看到了这个警告(另见屏幕截图):
PEP8:模块级导入不在文件顶部
问题:用双下划线存储这些变量的正确方法/位置是什么?
【问题讨论】:
-
PEP 8 是一个动态文档。考虑到它之前可能对这个主题沉默。
-
@MartijnPieters - 是否有机会查看添加/更改部分的时间?