gpt4 book ai didi

Python语法不一致?

转载 作者:太空狗 更新时间:2023-10-29 21:23:02 25 4
gpt4 key购买 nike

我一直在阅读 python 的 special class methodsDive into Python , 似乎有些方法的语法很奇怪或不一致。

要从字典中获取项目,您可以调用字典类方法 items()

>>> my_dictionary.items()
[('name', 'Old Gregg'), ('Race', 'Scaly Man-Fish')]

但是,要确定该字典中的键数,您可以调用 len() 并将字典作为参数提供给它。

>>> len(my_dictionary)
2

我一直认为像 len() 这样的方法实际上并不是你调用它们的任何类的一部分,但在阅读 Dive into Python 的第 5 章后我看到了 len () 实际上会导致调用字典方法。

my_dictionary.__len__()

那么为什么它和类似的方法不像典型的类方法那样调用呢?

my_dictionary.len()

是否有我不知道的约定?

最佳答案

Guido van Rossum explained it thusly :

(a) 对于某些运算,前缀表示法只是比后缀读起来更好——前缀(和中缀!)运算在数学中有着悠久的传统,它喜欢视觉帮助数学家思考问题的符号。将我们将 x*(a+b) 之类的公式重写为 xa + xb 的简单性与使用原始 OO 表示法做同样事情的笨拙性进行比较。

(b) 当我读到说 len(x) 的代码时,我知道它在询问某物的长度。这告诉我两件事:结果是一个整数,参数是某种容器。相反,当我阅读 x.len() 时,我必须已经知道 x 是某种实现接口(interface)或继承自具有标准 len() 的类的容器。当一个没有实现映射的类有一个 get()keys() 方法,或者不是文件的东西有一个write() 方法。

关于Python语法不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5892723/

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