documentation: what is "::="?
george.sakkis at gmail.com
Mon Oct 13 23:52:14 CEST 2008
On Oct 13, 5:33 pm, Anita Kean <ak... at paradise.net.nz> wrote:
> I just downloaded the new python2.6 documentation,
> full of hopes it would solve some basic mysteries for me.
> I'm new to python, so please forgive my ignorance.
> I've two questions.
> 1) Everywhere in the old and new documentation, the
> string of characters "::=" is used in "explaining" things - but
> I can nowhere find any stated meaning of this string.
> I've had no luck searching on it on search engines -
> and even less if I don't quote it - the search engine returns an
> I couldn't find one occurrence of it in the new 2.6 tutorial,
> nor in the sphinx-generated index of symbols, where "==" and
> other character strings appear.
> But for example in the reference directory, a grep on "::="
> returns many many hits,
> and the first one in simple_stmts.html (which I sort of
> hoped _would_ be simple) was (quote):
> > Simple statements¶
> > Simple statements are comprised within a single logical line. Several
> > simple statements may occur on a single line separated by semicolons.
> > The syntax for simple statements is:
> > simple_stmt ::= expression_stmt
> > | assert_stmt
> > | assignment_stmt
> > | augmented_assignment_stmt
> > | pass_stmt
> > | del_stmt
> > | print_stmt
> > | return_stmt
> > | yield_stmt
> > | raise_stmt
> > | break_stmt
> > | continue_stmt
> > | import_stmt
> > | global_stmt
> > | exec_stmt
> > Expression statements¶
> > ...
> So what's the relationship between the left and right hand sides of the "::="
> string here?
> 2) There is one other symbol the Python documentation seems to have appropriated
> but never documents which I also come up against constantly, but which is never
> defined - its use of "<==>"
> e.g. in the os module docs
> | x.__str__() <==> str(x)
> (and that's all there is on __str__ in os)
> I'm guessing something like "if and only if" is implicated here?
> But for example, if I import the sys module and perform the following three
> print sys.path
> the first two give me the python path, and the last reports an error:
> > >>> str(sys.path)
> > Traceback (most recent call last):
> > File "<stdin>", line 1, in <module>
> > File "/usr/lib/python2.5/locale.py", line 244, in str
> > return format("%.12g", val)
> > File "/usr/lib/python2.5/locale.py", line 147, in format
> > formatted = percent % value
> > TypeError: float argument required
> What is it I'm not understanding here?
> Are "::=" and "<==>" documented anywhere in the python docs?
Neither of these is a valid Python operator. '::=' is Backus-Naur Form
(BNF) metasyntax ; it's a general syntax to express context free
grammars. "<==>" typically denotes mathematical equivalence; it is
used informally in the docs to express that two expression are
I can't tell why you get an error on str(sys.path); it works fine
here. Something is probably wrong with your installation or locale
More information about the Python-list