[issue22122] turtle module examples should all begin "from turtle import *"
New submission from Mark Summerfield: The turtle module is aimed primarily at young beginners to Python. Making them type turtle.this and turtle.that all over the place is tedious and unhelpful. At the start of the turtle docs there's a nice example that begins from turtle import * and the following code is all the better for it. But none of the other examples do this. I realise that this would make the module's docs inconsistent, but given the target audience and given that we surely want to lower the barrier to entry, it would be a reasonable concession to make? ---------- assignee: docs@python components: Documentation messages: 224538 nosy: docs@python, mark priority: normal severity: normal status: open title: turtle module examples should all begin "from turtle import *" type: enhancement versions: Python 3.4, Python 3.5 _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue22122> _______________________________________
Changes by Ethan Furman <ethan@stoneleaf.us>: ---------- nosy: +ethan.furman _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue22122> _______________________________________
Terry J. Reedy added the comment: I think your suggestion is wrong as is and that this issue should be revised or closed. The simple initial example is a complete program. PEP8 discourages 'import *' but it is acceptable in this context. The snippets you refer to follow "24.1.3. Methods of RawTurtle/Turtle and corresponding functions Most of the examples in this section refer to a Turtle instance called turtle." Methods are always documented as method calls, and they should be here too. The function interface can only be used for 1 turtle, while drawings often require more than 1. See turtledemo for examples such as 'forest', which uses 3 Turtle instances. Nothing says that users have to name an instance 'turtle'. In practice one might use 't1', 't2', etc, or other short names. Within a subclass of Turtle, with added methods, the prefix would be 'self.'. The quote above could be, and perhaps should be augmented with a reminder that "If one uses the function interface for one turtle or the first of many turtles, 'turtle.' should be omitted." As a further concession to beginners, this could even be follows by "If one uses the object interface, replace 'turtle' with the actual name of a particular turtle." ---------- nosy: +terry.reedy _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue22122> _______________________________________
Mark Summerfield added the comment: Ah, we're slightly at cross purposes. I showed them purely in terms of the procedural API. However, I can see now that I could have begun with: import turtle ... jane = turtle.Turtle() jane.fd(100) So, to "teach" their turtle how to go in a square, I guess they'd do: def square(who, size=100): for n in range(4): who.fd(100) who.rt(90) square(jane) That seems reasonable, but then why isn't the first (and only complete) example done in this OO-ish style? Anyway, I've marked this closed and will switch to this approach in future. Thanks. ---------- resolution: -> not a bug status: open -> closed _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue22122> _______________________________________
participants (3)
-
Ethan Furman
-
Mark Summerfield
-
Terry J. Reedy