我来自 Javascript 背景(可以通过 .
和 []
符号访问属性),所以请原谅我,但是 Python 中两者之间的区别到底是什么?
根据我的实验,似乎应该始终使用 []
来获取索引 list
或 set
一个 dictionary
。这是正确的,如果不是,你什么时候在 Python 中使用 .
?
原文由 Startec 发布,翻译遵循 CC BY-SA 4.0 许可协议
我来自 Javascript 背景(可以通过 .
和 []
符号访问属性),所以请原谅我,但是 Python 中两者之间的区别到底是什么?
根据我的实验,似乎应该始终使用 []
来获取索引 list
或 set
一个 dictionary
。这是正确的,如果不是,你什么时候在 Python 中使用 .
?
原文由 Startec 发布,翻译遵循 CC BY-SA 4.0 许可协议
.
用于访问属性(包括方法)。 []
用于访问所谓的“项目”,通常是各种容器对象的内容。
JavaScript 不区分这两个东西,但是 Python 区分。你是正确的 []
用于访问列表或字典中的数据。 .
用于访问诸如 list.append
和 dict.update
等方法。它还用于访问其他类型对象的其他数据;例如,已编译的正则表达式对象有一个 pattern
属性保存正则表达式模式(您可以使用 rx.pattern
访问它)。
一般来说,惯例是 []
用于“开放式”数据存储,您事先不知道该对象将保存多少数据或数据类型; .
更常用于对象“天生”具有的特定数据,并使用预定义的名称进行访问。例如,只知道列表中的某物并不能告诉您其中的内容(为此您使用 []
),但它确实告诉您可以附加到它(并访问 append 方法你使用 .
)。
Python 和 JavaScript 在这方面的另一个主要区别是,在 Python 中, .
和 []
的行为都可以由对象自定义。所以 obj.foo
或 obj[foo]
可能会做一些特殊的事情,如果 obj
是一个为它们定义自己行为的对象。有各种自定义类型将其用于自己的目的。
原文由 BrenBarn 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答879 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
点运算符用于访问任何对象的属性。例如,一个复数
具有(除其他外)两个属性
real
和imag
:除了那些,它还有一个方法
conjugate()
,这也是一个属性:方括号表示法用于访问集合的成员,无论是在字典或其他映射的情况下是按键:
…或在列表或字符串等序列的情况下按索引:
这些集合还分别具有以下属性:
…同样,在上述情况下,这些属性恰好是方法。
虽然所有对象都有一些属性,但并非所有对象都有成员。例如,如果我们尝试使用方括号表示法来访问复数的成员
c
:…我们得到一个错误(这是有道理的,因为复数没有明显的方法来拥有成员)。
It’s possible to define how
[]
and.
access work in a user-defined class, using the special methods__getitem__()
and__getattr__()
respectively.解释如何这样做超出了这个问题的范围,但您可以在 Python 教程 中阅读更多相关信息。