Python中的方括号和点表示法之间有什么区别?

我来自Javascript背景(可以同时通过属性.[]符号访问属性),所以请原谅我,但是Python中两者之间的区别到底是什么?

从我的实验它seeems认为[]应始终使用,既得到的索引listset并从在某个键中获得的价值dictionary。这是否正确?如果不正确,什么时候.在Python中使用?

回答:

点运算符用于访问任何对象的属性。例如,复数

>>> c = 3+4j

具有(其中包括)两个属性realimag

>>> c.real

3.0

>>> c.imag

4.0

除此以外,它还有一个方法conjugate(),它也是一个属性:

>>> c.conjugate

<built-in method conjugate of complex object at 0x7f4422d73050>

>>> c.conjugate()

(3-4j)

方括号表示法用于访问集合的成员,无论是字典还是其他映射,都是通过键访问的:

>>> d = {'a': 1, 'b': 2}

>>> d['a']

1

…或在列表或字符串等序列的情况下按索引:

>>> s = ['x', 'y', 'z']

>>> s[2]

'z'

>>> t = 'Kapow!'

>>> t[3]

'o'

这些集合还分别具有以下属性:

>>> d.pop

<built-in method pop of dict object at 0x7f44204068c8>

>>> s.reverse

<built-in method reverse of list object at 0x7f4420454d08>

>>> t.lower

<built-in method lower of str object at 0x7f4422ce2688>

…在上述情况下,这些属性恰好是方法。

尽管所有对象都具有某些属性,但并非所有对象都具有成员。例如,如果我们尝试使用方括号表示法访问我们的复数成员c

>>> c[0]

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: 'complex' object is not subscriptable

…我们得到一个错误(这是有道理的,因为复数没有明显的方法拥有成员)。

这是可能的定义如何[],并.在用户定义的类访问工作,采用特殊的方法__getitem__()__getattr__()分别。解释如何做超出了这个问题的范围,但是您可以在Python

Tutorial中阅读更多有关它的内容。

以上是 Python中的方括号和点表示法之间有什么区别? 的全部内容, 来源链接: utcz.com/qa/410445.html

回到顶部