<p>这不是“数组中的字符串”。你知道吗</p>
<p>括号运算符用于某种序列(通常是<code>list</code>,或<code>tuple</code>)、映射(通常是<code>dict</code>,或字典)或其他某种特殊对象(例如这个<code>MenuButton</code>对象,它不是序列或映射)中的项访问。与其他一些语言不同,在python中,任何对象都可以使用这个操作符。你知道吗</p>
<p><code>list</code>类似于其他语言中的“数组”。它可以包含任何类型的对象的混合物,并保持对象的顺序。<code>list</code>对象对于维护对象的有序序列非常有用。可以使用<code>list</code>中的对象的索引访问该对象,如下所示(索引从零开始):</p>
<pre><code>x = [1,2,3] # this is a list
assert x[0] == 1 # access the first item in the list
x = list(range(1,4)) # another way to make the same list
</code></pre>
<p>当您想将值与键关联时,<code>dict</code>(dictionary)很有用,这样您就可以稍后使用键查找值。像这样:</p>
<pre><code>d = dict(a=1, b=2, c=3) # this is a dict
assert x['a'] == 1 # access the dict
d = {'a':1, 'b':2, 'c':3} # another way to make the same dict
</code></pre>
<p>最后,您可能还会遇到同样使用同一项访问接口的自定义对象。在<code>Menubutton</code>情况下,<code>['menu']</code>只访问响应键<code>'menu'</code>的某个项(由tkinterapi定义)。您也可以使用item访问创建自己的对象类型(下面的python 3代码):</p>
<pre><code>class MyObject:
def __getitem__(self, x):
return "Here I am!"
</code></pre>
<p>这个对象除了返回与您给定的键或索引值相同的字符串外,没有什么作用:</p>
<pre><code>obj = MyObject()
print(obj [100]) # Here I am!
print(obj [101]) # Here I am!
print(obj ['Anything']) # Here I am!
print(obj ['foo bar baz']) # Here I am!
</code></pre>