gpt4 book ai didi

python - 在尝试查看符号是否为函数之前,Python 是否假定它是一种类型?

转载 作者:太空狗 更新时间:2023-10-30 00:07:08 25 4
gpt4 key购买 nike

在 Python 中,符号 int 既用作类型又用作内置函数。但是当我在 REPL 中使用 int 或询问它的类型时,REPL 告诉我它是一个类型。

>>> int
<type 'int'>
>>> type(int)
<type 'type'>

很好,但是 int 也是一个内置函数:它列在内置函数表中 right in the Python documentation .

其他内置函数在 REPL 中是这样报告的:

>>> abs
<built-in function abs>
>>> type(abs)
<type 'builtin_function_or_method'>

但我无法让 type 向我显示 int。现在很明显,如果我愿意,我可以int用作函数(很抱歉使用map而不是理解,我只是想提出一个观点):

>>> map(int, ["4", "2"])
[4, 2]

因此 Python 知道使用该函数。但是为什么 type 选择类型而不是函数呢? the definition of the type function 中没有内容说期待这个。然后作为后续,这个表达式的含义是什么:

id(int)

这是给我类型或函数的 id 吗?我期待前者。现在如果是前者,我如何获取内置函数 int 的 id?

最佳答案

只有一种叫做int,只有一种叫做abs

区别在于int是一个类,而abs是一个函数。但是,两者都是可调用的。当您调用 int(42) 时,它会调用 int 类的构造函数,返回类 int 的实例。

这与以下内容并没有太大区别:

class Int(object):

def __init__(self, init_val=0):
self.val = init_val

obj = Int(42)
print Int, type(Int), obj, type(obj)

这里,Int是可调用的,可以用来构造类的实例。

一旦你意识到这一点,其余的就会随之而来。

关于python - 在尝试查看符号是否为函数之前,Python 是否假定它是一种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24354395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com