Python的str()函数实际上不是函数吗?

时间:2014-04-17 01:44:14

标签: python

我的印象是str(5)之类的内容正在整数str上调用5函数。但是当您在解释器中输入str时:

>>> str
<class 'str'>

所以str实际上是一个类,这使得像if type(a) is str这样的代码更有意义。但是为什么str列在&#34;内置函数&#34;在文档中?这只是一个简化吗?

3 个答案:

答案 0 :(得分:10)

将其列为函数是一种简化,是的。但请记住,类是可调用的* - 这就是你如何创建类的实例!

如果它对您有所帮助,请将str(5)视为构建来自数字5的字符串。

请注意,所有其他内置类型都采用相同的方式:int()float()str()tuple()list(),{{ 1}},set() ...他们都是所有类,但是可以调用它们来构造类的实例,并且如果它是&#39;它通常会接受另一个类型的实例作为参数。适用。

*:至少,大部分时间。

答案 1 :(得分:1)

str(5)实际上是在str类上调用__call__()函数:

>>> str(5)
'5'
>>> str.__call__(5)
'5'

所以是的,str表现为一个函数以及一个类(或2.7之前的版本中的类型)

答案 2 :(得分:0)

我认为查看它的简单方法是str()返回str类的实例。