澄清python术语

Posted

技术标签:

【中文标题】澄清python术语【英文标题】:Clarification on python terminology 【发布时间】:2018-09-28 19:37:00 【问题描述】:

我写了一段代码:

def Greeting():
    return "Hello there!"
Greeting.help = "This function will say hello"

print(Greeting())
print(Greeting.help)

我不确定 Greeting.help 会被称为什么...我尝试过搜索,但我觉得我使用了错误的搜索词。

【问题讨论】:

财产?但是为什么要做这样的事情呢? 在python中,函数是一阶对象。搜索一下这是什么意思,然后你就会意识到这些只是“成员变量”或“属性” 函数名不要使用大写 其实正确的python术语是“属性”(python的“属性”是计算属性,“成员变量”是C++/Java术语)。 @IvanVinogradov 虽然确实违反了 pep08,但将函数名大写在技术上是合法的。 【参考方案1】:

您已在对象Greeting 上设置了一个属性。这就是为什么相应的函数被称为getattrsetattr

>>> getattr(Greeting, 'help')
'This function will say hello'
>>> setattr(Greeting, 'foo', 'bar')

这些属性存储在字典Greeting.__dict__中,也可以通过vars(Greeting)访问。

>>> Greeting.__dict__
'foo': 'bar', 'help': 'This function will say hello'
>>> vars(Greeting)
'foo': 'bar', 'help': 'This function will say hello'

请注意,设置帮助/文档字符串的惯用方式如下:

>>> def foo():
...     'help text'
...     pass
...
>>> foo.__doc__
'help text'

【讨论】:

【参考方案2】:

您已经设置了一个对象(在本例中为函数对象)的单个属性。

如果你想记录它,那么更传统的方法是设置文档字符串:

def Greeting():
    """ This function will say hello """
    return "Hello there!"

然后可以通过help(Greeting)查看:

>>> def Greeting():
...     """ This function will say hello """
...     return "Hello there!"
...
>>> Greeting.__doc__
' This function will say hello '
>>> help(Greeting)

打印出来:

Help on function Greeting in module __main__:

Greeting()
    This function will say hello
(END)

【讨论】:

s/属性/属性/。在 Python 中,一个属性是这样的:docs.python.org/3/library/functions.html#property

以上是关于澄清python术语的主要内容,如果未能解决你的问题,请参考以下文章

术语聚合性能高基数

shiro实战系列之常用专业术语

python 术语

Python:术语“类”VS“类型”

Python 术语:接口与协议

python中'argv'的确切术语是啥?