353: Python

Explain xkcd: It's 'cause you're dumb.
(Redirected from 353)
Jump to: navigation, search
I wrote 20 short programs in Python yesterday. It was wonderful. Perl, I'm leaving you.
Title text: I wrote 20 short programs in Python yesterday. It was wonderful. Perl, I'm leaving you.

[edit] Explanation

Python is a high-level programming language designed specifically to be make it easy to write clear, readable programs.

Dynamic typing and significant whitespace are two controversial features of Python, which make some people—like Cueball's friend—hesitant to use the language.

Dynamic typing means that variables do not have types (like "list of short integers" or "a bunch of letters"); any value of any type can be placed in any variable. Dynamic typing allows for more flexible languages, but it means that certain kinds of errors (like trying to subtract a letter from a number) can't be caught until a program is run, and some people think this is too dangerous for the tradeoff to be acceptable.

Whitespaces are invisible text characters, like spaces or tabs. In programming, blocks of code controlled by a statement are usually indented under that statement. Most languages require you to use braces ({…}) or special keywords (BEGIN…END) to delimit these blocks; in Python, the indentation itself is the delimiter. Many Python programmers find that this makes code more readable, but many other programmers find it too "magical" and don't trust it.

Classes, functions and constants in Python are packed into modules. To use a module, you write "import module" at the top of your source file. Python comes with a very powerful standard library of modules to do everything from parsing XML to comparing two sets of files for differences, and new modules can be easily installed from the PyPI repository, which has more than 65,000 more to choose from. Cueball can fly because he imported the antigravity module. Python still works for Cueball in 482: Height.

Perl, mentioned in the title text, is another high-level programming language, but Randall doesn't like it any more because its syntax is less friendly.

[edit] Transcript

[A Friend is talking to Cueball, who is floating in the sky.]
Friend: You're flying! How?
Cueball: Python!
Cueball: I learned it last night! Everything is so simple!
Cueball: Hello world is just 'print "Hello, World!"'
Friend: I dunno... Dynamic typing? Whitespace?
Cueball: Come join us! Programming is fun again! It's a whole new world up here!
Friend: But how are you flying?
Cueball: I just typed 'import antigravity'
Friend: That's it?
Cueball: ...I also sampled everything in the medicine cabinet for comparison.
Cueball: But I think this is the python.

[edit] Trivia

  • In response to this comic, the Python developers implemented the module antigravity in version 2.7+. When you import it, the default web browser will open this comic. Also, in version 3+, the module contains a geohashing function.
  • As Perl could also be the name of a girl the title text of leaving Perl has double meaning. Also, being with the other program was wonderful. He has not only been unfaithful he is actually leaving!

comment.png add a comment! ⋅ Icons-mini-action refresh blue.gif refresh comments!


It is necessary for both Cueballs to sample the medicine cabinet in order for this to be a hallucination. It was probably python. (talk) (please sign your comments with ~~~~)

Or maybe there is just one Cueball - the one on the ground who is hallucinating - because he tried everything...? ;-) Kynde (talk) 20:45, 3 May 2014 (UTC)

'I also sampled everything in the medicine cabinet for comparison' is a possible reference to George's Marvellous Medicine, the children's book written by Roald Dahl, wherein a combination of medicines and household materials produces fantastical effects. Quetzalcoatl (talk) 14:31, 10 February 2014 (UTC)

I think it's related to the invention of photographs, but I'm not sure 06:19, 3 January 2015 (UTC)

Woah guys, antigravity is a real module in Python! I was looking around the lib folder, trying to figure out how to put a module into it, and there it was - antigravity.py . It just sends your browser to the comic. -- 22:07, 13 December 2014 (UTC)

Yeah, that's already covered in the Trivia section ;-) --SlashMe (talk) 23:22, 14 December 2014 (UTC)

The implication is that in Python many otherwise amazing things become easily possible after a simple import statement and/or that there is a module for almost anything you'd want to do no matter how difficult. 16:30, 29 April 2015 (UTC)

The explanation was wrong about many things. Python doesn't have a heavily-simplified syntax--it's about as simple as Perl (and a lot less simple than Lisp); the difference is that it's designed first and foremost to be consistent, easy to read, and easy to remember, even at the cost of occasionally being more verbose or rigid. Its syntax doesn't generally reduce complicated things to a single word; it does allow many complicated things that might take 20 statements in C to be reduced to a single statement, but that's because it's high-level (again, like Perl), not because of its syntax. Dynamic typing has nothing to do with declaring the types of values, much less specifically numeric values, and it has nothing to do with Python automatically knowing how much space to reserve for a value--in fact, it's the opposite; C knows to reserve 4 bytes for an int variable at compile time, whereas Python has no idea what kind of value you're going to put into the variable until runtime. And "like in Visual Basic or JavaScript" is very confused--Visual Basic is statically typed, while JavaScript is dynamically typed, just like Python.

Also, the explanation didn't explain why Cueball's friend was reticent to use dynamic typing or significant whitespace, or what the point of importing modules is.

So I rewrote most of it. 20:55, 15 September 2015 (UTC)


Personal tools


It seems you are using noscript, which is stopping our project wonderful ads from working. Explain xkcd uses ads to pay for bandwidth, and we manually approve all our advertisers, and our ads are restricted to unobtrusive images and slow animated GIFs. If you found this site helpful, please consider whitelisting us.

Want to advertise with us, or donate to us with Paypal?