当前位置: 首页 > 面试题库 >

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

谢承
2023-03-14
问题内容

我来自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中
阅读更多有关它的内容。



 类似资料:
  • 问题内容: 我试图理解和符号之间的区别。在下面的问题中,我使用正确的答案。当我使用它不起作用。有人可以解释为什么与众不同。 问题答案: 使用点表示法时,表示对象中的实际属性,该属性将不存在。因此,返回不等于的。 使用表示法时,您将使用变量中的名称访问对象中的属性。因此,这将起作用。 例如, 这将打印, 因为,没有成员命名(尝试获取名称为的成员),而在下一种情况下,有成员命名为(尝试获取具有in的值

  • 问题内容: 它们都有效吗?是出于某些原因而首选? 问题答案: 方括号是列表,括号是元组。 列表是可变的,这意味着您可以更改其内容: 而元组不是: 另一个主要区别是,元组是可哈希的,这意味着您可以将其用作字典的键。例如: 请注意,正如许多人指出的那样,您可以将元组加在一起。例如: 但是, 这并不意味着元组是可变的 。在上面的示例中,通过将两个元组加在一起作为参数来构造 新的 元组。原始元组未修改。为

  • 问题内容: 使用和访问数组或对象属性的真正区别是什么?使用哪一个? 另外,为什么运算符不允许索引属性? 问题答案: 使用来访问成员称为 点符号 。用它们访问它们称为 括号符号 。 点表示法仅适用于属性名称即有效标识符名称spec,因此基本上任何名称也将是有效 变量名称 (有效 标识符和任何保留关键字。 [规格]](http://es5.github.io/#x7.6.1) 。 括号表示法需要一个表

  • 这里我理解哈希(#)符号将定义为本地模板变量,但是前面的星号是什么意思呢?还有,有必要吗? 下面是使用括号的示例: 我有点理解周围的括号将它绑定到HTML属性/Angular指令。这是否意味着它们是Angular计算表达式的指针?就像是Angular 1中的的等价物? 我猜真正的问题是,这些符号在Angular 2中有特殊的含义吗,知道何时使用每一个的最简单的方法是什么?谢谢!!

  • 问题内容: 我对以下代码行的语法感到困惑: 数据框对象由2列(“大脑”和“身体”)组成 当我打印x_values时,我得到这样的东西: 就dataframe对象的属性和方法而言,我知道pandas文档,但双括号语法使我感到困惑。 问题答案: 考虑一下: 来源DF: 选择一列-生成Pandas.Series: 选择DataFrame的子集-结果为DataFrame: 结论: 第二种方法允许我们从Da

  • 问题内容: 我以为还会有另一个问题,但我找不到。在使用PHP的MySQL中,我通常用反引号封装字段名,以掩盖任何保留的名称或字符。但是,我的一位同事指出,这也可以使用方括号来实现。排除反引号与SQL Server不兼容的事实(显然),有什么区别?我应该使用哪个? 问题答案: SQL Server / T-SQL使用方括号(以及MS Access),而MySQL使用反引号。 据我所知,可以在文档中露