2015-09-05 6 views
6

誰かがthis interesting formulationを掲示し、私は、Python 3コンソールでそれを試してみた:`{...}`はPython変数のプリント出力の意味ですか?

>>> (a, b) = a[b] = {}, 5 
>>> a 
{5: ({...}, 5)} 

ここに解凍するためにたくさんがあるが、私が理解していない(と面白いキャラクター製剤のセマンティクスは、特に難しいようです検索するには{...}とは何ですか?ビットの上変更する:私は{...}が変更されていると期待しているだろうが、私の最も近いの推測, 5は最初のタプルを意味していることである:

>>> (a, b) = a[b] = {'x':1}, 5 
>>> a 
{5: ({...}, 5), 'x': 1} 

それは本当に私をバッフルこの第二の出力であります要素はどういうわけか未定義ですか?そしてそれが{...}の意味ですか?もしそうなら、これはPythonの私のためのタイプの新しいカテゴリです。私はもっと学ぶことができるように、その名前を付けたいと思います。

+0

「省略記号」と呼ばれています。[こちら](https://stackoverflow.com/questions/772124/what-does-the-python-ellipsis-object-do)と[こちら](https: //stackoverflow.com/questions/101268/hidden-features-of-python/112316#112316) – CoryKramer

+2

これはPythonの省略符号オブジェクトとは関係ありません – Eevee

答えて

12

これは、ディクテーションが再帰的に繰り返されることを示します。つまり、それ自体が含まれています。もっと簡単な例:

>>> a = [] 
>>> a.append(a) 
>>> a 
[[...]] 

これは唯一の要素がそれ自身であるリストです。明らかに、reprは文字通りに印刷することはできません。あるいは、それは無限に長くなります。代わりに、組み込み型はこれが起こったときに通知し、自己包含を示すために...を使用します。

これは特別なタイプの値ではなく、「...」を「ここでは何かが省略された」という意味の通常の英語の使用だけでなく、省略された部分が辞書であることを示す中かっこも含みます。また、上記のように、リストは括弧でそれを参照するか、時折タプルのために括弧付き可能性があります

>>> b = [], 
>>> b[0].append(b) 
>>> b 
([(...)],) 

Pythonの3あなたはreprlibの形で、独自のオブジェクトでこれを行うことができますので、いくつかのツールを提供しています。

+0

魅力的!丁寧な対応をありがとう! –

関連する問題