打印变量名称的惯例是什么?

时间:2017-11-19 22:29:15

标签: python conventions

当在纪录字符串中引用变量时,使用``

def func(var):
    """
    Parameter ``var`` is referred in a documetation string.
    """

打印变量名称的惯例是什么?(或使用字符串显示给用户,例如异常消息)是否相同:

def func(var):
    if not check1(var):
        raise Exception("parameter ``var`` has to be...")
    if not check2(var):
        logger.warn("parameter ``var`` is...")

2 个答案:

答案 0 :(得分:3)

让我们在解释器中生成一些例外:

Python 3.5.2 (default, Sep 14 2017, 22:51:06) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> sdf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sdf' is not defined
>>> mystr = 'sdf'
>>> mystr.foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'foo'

正如我们所看到的,异常消息的常见做法似乎是单引号,如'name'中所示:

NameError: name 'sdf' is not defined
AttributeError: 'str' object has no attribute 'foo'

OP(@Itay)更好的例子:

>>> def a(d):
...     pass
... 
>>> a()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: a() missing 1 required positional argument: 'd'

答案 1 :(得分:0)

这取决于。我喜欢使用单个反引号甚至是单引号:

"parameter `var` has to be [...]"
"parameter 'var' has to be [...]"

在我看来,双重反引号会损害可读性。顺便说一句,你没有 使用双反引号来引用文档字符串中的变量。我知道Sphinx和大多数IDE /代码分析工具需要双重反引号,但你也可以坚持引用(除非你有数百个对象并且必须使用autodoc)。