关于python:单独作用的函数和使用”dot”操作符的函数之间的区别

Difference between functions that act alone and those with the “dot” operator

本问题已经有最佳答案,请猛点这里访问。

我对Python中的函数以及它们是如何分类有点困惑。首先,我们有像print()这样的函数,它简单地对一些指令进行编码并对输入进行操作。但是,我们也有像'str'.capitalize()这样的功能,只有当它们有一个"执行者"附在它们身上时,它们才能起作用。这可能不是一个见多识广的问题,但是这些形式之间的区别是什么,以及它们是如何分类的?


Python是一种多范式语言,您可以编写结构化和面向对象的语言。python具有内置函数和内置类;例如,当您在两个引号(")之间使用字符序列时,您将实例化字符串类。此实例称为object。对象可以包含函数或/和其他对象。您可以使用点访问内部函数或对象。


print()是python3中的一个函数(在python2中是一个语句),capitalize()是一个方法。

请看一下这个答案,把事情弄清楚一点。


python是面向对象的。这意味着我们有"对象",基本上包含了他们自己的数据,并且有他们自己的方法。字符串是对象的一个例子。另一个例子是,如果您有一个Person对象。你不能只做walk(),你必须做miles.walk()。你可以试试步行(英里)。但并非所有的东西都可以行走,所以我们将函数walk()指定给person对象。

所以是的,Python创建者本可以使capitalize('str')合法,但他们决定使字符串对象特有的大写函数。


print()是一个内置函数,您可以像下面这样检查。

1
2
3
4
>>> type(print)
<class 'builtin_function_or_method'>
>>> hasattr(print, '__call__')
True

但是capitalize()str类的方法,您只能通过使用字符串对象来使用它。

1
2
>>> hasattr('string', 'capitalize')
True