# HG changeset patch # User Atul Varma # Date 1212708700 25200 # Node ID 58662d737f495351899aaec673634320a9a0cbeb # Parent eaf4ddc3b0927bbccbdfcf6bbbb5288113429fe2 Added TODOs diff -r eaf4ddc3b092 -r 58662d737f49 PythonForJsProgrammers.txt --- a/PythonForJsProgrammers.txt Thu Jun 05 16:11:22 2008 -0700 +++ b/PythonForJsProgrammers.txt Thu Jun 05 16:31:40 2008 -0700 @@ -108,7 +108,8 @@ If there's a function you're interested in learning more about, you can look at the built-in documentation metadata associated with the -object by querying its ``__doc__`` attribute: +object--known as the `docstring`--by querying the object's ``__doc__`` +attribute: >>> print "a string".join.__doc__ S.join(sequence) -> string @@ -216,7 +217,20 @@ >>> bar(1, z=6) 8 -As in JavaScript, they're first-class citizens and can be passed +You can also write documentation for functions by providing a string +immediately following the function signature: + + >>> def foo(): + ... "Does something useless" + ... pass + +As mentioned earlier, this string is called the `docstring`, and is +actually attached to the function object as its ``__doc__`` attribute. +Creating docstrings for your functions not only helps document your +code, but also makes it easier for Python users to interactively +explore your code, too. + +As in JavaScript, Functions are first-class citizens and can be passed around as parameters to other functions and so forth. Global Variables @@ -281,18 +295,30 @@ implementation-specific variables are conventionally preceded with one or two underscores. -Lists -===== +Sequences +========= -Lists are a lot like JavaScript arrays. Iterating through them is -easy: +Lists are a lot like JavaScript arrays: >>> mylist = ["hello", "there"] + +Iterating through them is easy: + >>> for i in mylist: ... print i hello there +Strings are just sequences of characters, so they can be used +similarly: + + >>> for c in "boof": + ... print c + b + o + o + f + Tuples are just like lists, only they're immutable and differentiated from lists by using parentheses instead of brackets: @@ -306,14 +332,45 @@ >>> mytuple = ("hello",) # Without the comma, it'd just be a string. -It's also not possible for there to be "holes" in Python arrays like -there are in Javascript ones: +It's also not possible for there to be "holes" in Python lists like +there are in Javascript arrays: >>> a = [1, 2, 3] >>> del a[1] # Deletes '2' >>> a [1, 3] +Control Flow +============ + +You've already seen examples of ``for``, ``if``, and ``if...else``. +Python also supports ``if...elif``: + + >>> if 1 == 2: + ... pass + ... elif 1 == 1: + ... print "Hooray!" + ... else: + ... print "Boo." + Hooray! + +It also supports ``while``: + + >>> while False: + ... print "This should never display." + +However, Python does not have a ``do...while`` loop. + +To loop through a range of numbers, you can use the ``range()`` +built-in function, which returns a list of numbers in the range you +specify: + + >>> for i in range(3): + ... print i + 0 + 1 + 2 + Indexing and Slicing ==================== @@ -432,3 +489,7 @@ in `PEP 8`_. .. _`PEP 8`: http://www.python.org/dev/peps/pep-0008 + +TODO: Mention TinyPy. +TODO: Mention "Batteries Included" +TODO: Mention generators, generator comprehensions/expressions, array comprehensions, other stuff lifted from Python by JS.