Glyphs¶
A glyph is an element of writing: an individual mark.
Python uses glyphs as a shorthand notation for common data structures:
[1, 2] # list
(1, 2) # tuple
{1, 2} # set
{'a': 1, 'b': 2} # dictionary
Bad Parts¶
The syntax of tuple glyphs is inconsistent:
a = (1, 2,)
assert isinstance(a, tuple)
b = (1, 2)
assert isinstance(b, tuple)
c = (1,)
assert isinstance(c, tuple)
d = (1)
assert isinstance(d, int)
# e = (,)
# Invalid syntax
f = ()
assert isinstance(f, tuple)
Note
This has existed since at least 1991. See: http://www.python.org/search/hypermail/python-1992/0278.html
The glyphs for sets and dictionaries are potentially ambiguous:
a, b = {1: 'a', 2: 'b'}, {1, 2}
c, d = {1: 'a'}, {1}
e, f = {}, {} # are these dictionaries or sets?
The glyphs for are list comprehensions, set comprehensions, and generator expressions are inconsistent– one would expect tuple comprehensions as well:
>>> [x for x in range(5)]
[0, 1, 2, 3, 4]
>>> {x for x in range(5)}
set([0, 1, 2, 3, 4])
>>> (x for x in range(5))
<generator object <genexpr> at 0x10698feb0>