On Tue, Feb 2, 2021 at 11:28 AM André Roberge <andre.robe...@gmail.com>
wrote:

>
>
> On Tue, Feb 2, 2021 at 2:37 PM kirby urner <kirby.ur...@gmail.com> wrote:
>
>> On Tue, Feb 2, 2021 at 5:48 AM André Roberge <andre.robe...@gmail.com>
>> wrote:
>>
>>> Hello everyone,
>>>
>>> For about 20 months now, I have been working on a Python package
>>> intended to help beginners figure out what went wrong when their program
>>> generates a traceback. This package is called Friendly-traceback; you can
>>> find the fairly extensive documentation at
>>> https://aroberge.github.io/friendly-traceback-docs/docs/html/
>>>
>>>
>> Hi André --
>>
>> I'm reading your docs now.
>>
>> When I start into Python with beginners, I'll typically start with:
>>
>> >>> dir( )  # how will HyperKitty mangle this?
>>
>
Hah hah, look what HyperKitty did:

https://mail.python.org/archives/list/edu-sig@python.org/message/C6CF53KBJNLM7CF6QT35VBCCTWBTDNBU/

I'd say HyperKitty is not very friendly to the indigenous Python we used to
share here.


>>
>
>> showing what's in the namespace, the names Python
>> knows when "in" the namespace.
>>
>> But then the question right away arises:  where are
>> print, hex, str, dict... all these names Python knows?
>>
>> Answer (as we all know):  __builtins__
>>
>> So then I do a dir(__builtins__)
>>
>
> I think you mean simply  __builtins__, without the dir().  I use "pretty"
> from Rich (
> https://rich.readthedocs.io/en/latest/introduction.html?highlight=pretty#python-in-the-repl)
> so that dicts are nicely formatted.
>
>
Like in this screenshot:

https://www.flickr.com/photos/kirbyurner/50905387656/in/album-72157660337424600/

You have to feed __builtins__ (not quoted) to dir( ) to dump its contents
as
a list of strings.  That solves the mystery of where quit, range, map,
complex,
abs and so on and on are coming from.  Python knows these names and yet
dir( ) -- with no argument -- does not reveal them to be present in the
top-level
namespace (__main__). I describe __builtins__ as like a "utility belt" of
tools
around your waist, so close at hand that it's unnecessary to import them.

We're expanding out in concentric shells, taking in more and more of
what constitutes "Python".  I introduce my Five Dimensions (or Layers):

0.  Core syntax: keywords and punctuation (including indentation)
1.  __builtins__
2.  __ribs__ i.e. special names, magic methods, the scaffolding
3.  Standard Library (batteries included)
4.  3rd Party ecosystem (from small like friendly-traceback, and rich
all the way to giant frameworks like SQLAlchemy and Twisted -- to
name some of the early big projects  And of course your own RUR-PLE).

I tell students the optimum learning curve is not about mastering all
of level 0, then moving to level 1 and so on (plodding, methodical,
unproductive).  No, it's about spiraling, and going a little deeper
into each level as we progress.  So in the very first lesson I'm likely
to:

(a) talk about the five levels and
(b) dump the contents of __builtins__
(c) remark on the "funny look" of __rib__-syntax.

I'm giving them a sense of the big picture, and how much there is to
know about (e.g. "Python includes about fifty special names but you
will use far fewer than that on a regular basis").

In dumping the contents of builtins, I'm getting my segue to Exceptions
(so much of what's in there are "flags" that might get raised).

I speak very metaphorically e.g. how when you're new to an environment
you're always bumping up against limits, like a baby.  Or you're new to a
certain sport and don't really know the rules yet.  What's a foul?  Can I
pick up the ball and just run with it?  That depends on the namespace,
and the rules. Exceptions are about doing something other than crashing
when a rule is broken.

The environment pushes back, telling you what went wrong.  Python
creates such an environment for us the moment we enter the REPL.
We're free to play in it, to explore, and understanding the Exceptions
are there for our convenience and instruction makes them not scary.
Noobs are conscientiously afraid of "breaking things" and a teacher's
role includes showing safe ways to explore and gain fluency.

>From Exceptions, it's but a short step to try except syntax (level 0) and
Tracebacks (debugger, diagnostics, IDE features, your enhancements
-- level 4).

Kirby
_______________________________________________
Edu-sig mailing list -- edu-sig@python.org
To unsubscribe send an email to edu-sig-le...@python.org
https://mail.python.org/mailman3/lists/edu-sig.python.org/
Member address: arch...@mail-archive.com

Reply via email to