Python Primer ============= .. highlight:: python :linenothreshold: 3 Introduction ------------ This is a little introduction to Python_. It is not meant to teach you Python_, just give you enough syntax to write scripts for Notepad++. Basics ------ The key, is indentation. That separates out the blocks of code. Some people initially don't like this approach, thinking it might be unclear or easy to get wrong - I did. Now I think it's just great :) There are no semi-colons (;) at the end of lines like in C or Java. You can define a variable simply by using it.:: x = 5 To call a function, just type the name, followed by brackets, with any arguments in brackets.:: x = 5 console.write(x) If Statements ------------- An ``if`` statement doesn't need brackets around the test, just a colon (:) at the end of the line. The colon signifies the start of a new block. The next line must be indented more than the ``if`` line. The ``if`` block continues until the indentation reverts to the same indentation as the ``if`` line.:: console.write("Let's go") if x == 3: console.write("So x is 3 then") console.write("This line is also run if x is 3") console.write("this line is run always") To use an else, place the else at the same level as the if, and append a colon:: if x == 3: console.write("So x is 3 then") console.write("This line is also run if x is 3") else: console.write("Guess x isn't 3 this time.") console.write("Better luck next time") console.write("this line is run always") If you want an "else if", use ``elif``:: if x == 3: console.write("So x is 3 then") console.write("This line is also run if x is 3") elif x == 6: console.write("Hey it's your lucky day, x is 6") else: console.write("x is not 3 or 6 this time.") console.write("Better luck next time") Functions --------- To define a function, just use ``def``. Again, the indentation is important, the function definition lasts as long as the indentation stays the same:: def printNameAge(name, age): console.write("Hello {0}, ".format(name)) console.write("how was your {0} birthday?".format(age)) printNameAge("Dave", 99) Line 1 defines the function, the body of the function is lines 2 and 3. Line 5 calls the function with the arguments "Dave" and 99. You can read about the format() function (and what the ``{0}`` in the string means) in Python_'s documentation. To pass the function to another function (as in callbacks in Python Script), just use the name of the function without brackets:: def printNameAge(name, age): console.write("Hello {0}, ".format(name)) console.write("how was your {0} birthday?".format(age)) def callFunc(func) console.write("Calling function...\n") func("Dave", 99) callFunc(printNameAge) Line 11 calls the ``callFunc`` function, passing the printNameAge function to it. The ``callFunc`` function then calls printNameAge on line 8. Strings ------- Strings use double or single quotes. There's no difference, but that helps if you want to include one type or other in the string.:: someString = "this is a string with a ' single quote inside" someOther = 'this is a string with a " double quote inside' If you need both, just use ``\`` to escape them:: someString = "here's a string with both types of \" in it" If you need to use ``\`` itself, just include two:: someString = "here's a demo of using a \\ backslash" You can also use ``raw`` strings. These don't need the ``\\`` to mean ``\``, which can make certain strings (particularly regular expressions) easier to understand. However, you also can't escape a quote. To make a raw string, just put an ``r`` before the string someString = r"this is also a string using a \ backslash" Further Information ------------------- This guide may be extended in the future, if people request it, and either I get time, or somebody puts some time into it. There are many good sources of information on the Internet, I've included a couple here. http://docs.python.org/tutorial/ http://www.tutorialspoint.com/python/python_quick_guide.htm And all the information is available on http://www.python.org .. _Python: http://www.python.org/ .. _Scintilla: http://www.scintilla.org/