====== Python basics ====== ===== Variables ===== Python variables are very easy to set up and very flexible. a = 10 print(a) # 10 a = 2.5 print(a) # 2.5 a += a print(a) # 5.0 a = [ 1, 2, 3, 4, 5 ] print( a[2] ) # 3 len(a) # 5 a = "hello" a += " world" print(a) # hello world len(a) # 11 print(a[10]) # d So we just saw here that creating a variable is just writing its name and giving it a value. The type of value does not matter. And the variable will accept any type of value even if it's different from the one it use to have before. ===== Condititons ===== if ... then ... else ... if ( something ): # Will execute code here if something is True else: # Will execute code here if something is False if ... then ... else if ... then ... else ... if ( something ): # Will execute code here if something is True elif ( something_else ) : # Will execute code here if something is False and something_else is True else: # Will execute code here if both something and something_else are False ==== Boolean operations ==== True and False # False True or False # True not True # False ===== Functions ===== The keyword to define a function in Python is ''def''. def sum(a, b): return a + b sum(123, 456) # 579 It is possible to define default values for the parameters, with the same previous example def sum(a, b=1): return a + b sum(123) # 124 So in this case, since we are calling the function without a second parameter, Python will use the default value of that second one to execute the function. In this case, it will just add one. ===== Loops ===== Compared to Javascript, Java or C for example, loops are written in a different manner. Python uses iterators a lot for a lot of its datat types. So we don't use or don't have to create an "index variable" to loop over some content. We just need to use the iterator. a = [ 10, 20, 30, 40 ] for elements in a: print( elements ) # 10 # 20 # 30 # 40 msg = "hello" for letter in msg: print(letter) # h # e # l # l # o If you really need to get an index, it's possible to construct it with the function ''enumerate()'' for index, letter in enumerate(msg): print( str(index) + ": " + letter) # 0: h # 1: e # 2: l # 3: l # 4: o ===== Useful things ===== === Commenting === # The most common way of commenting. print ("hello") # Works only for whatever is after the # tag. # Works only on a single line ''' Multi line commenting is done this way. It's actually creating a multi-line String. But not assigning it to any variable. Works well if you want to comment multi lines of code. ''' === What is the type of this? === If you want to know what is the type of data stored in a variable, use the ''type()'' function. type("hello") # type(2) # type([1,2,3,4]) # type({"name": 'home', "value": 2}) # type((1,2,3)) # === Documentation === Extensive documentation can of course be found online. But sometimes, you might be Python scripting in the middle of the forest, on top of a mountain or in a Faraday cage, with no wifi or 3G access of any kind. Don't worry, Guido has you covered. Use the ''help()'' and ''dir()'' functions to navigate Python documentation right in the console. help() ''' Welcome to Python 3.4's help utility! If this is your first time using Python, you should definitely check out the tutorial on the Internet at http://docs.python.org/3.4/tutorial/. Enter the name of any module, keyword, or topic to get help on writing Python programs and using Python modules. To quit this help utility and return to the interpreter, just type "quit". To get a list of available modules, keywords, symbols, or topics, type "modules", "keywords", "symbols", or "topics". Each module also comes with a one-line summary of what it does; to list the modules whose name or summary contain a given string such as "spam", type "modules spam". You are now leaving help and returning to the Python interpreter. If you want to ask for help on a particular object directly from the interpreter, you can type "help(object)". Executing "help('string')" has the same effect as typing a particular string at the help> prompt. ''' help(dir) ''' Help on built-in function dir in module builtins: dir(...) dir([object]) -> list of strings If called without an argument, return the names in the current scope. Else, return an alphabetized list of names comprising (some of) the attributes of the given object, and of attributes reachable from it. If the object supplies a method named __dir__, it will be used; otherwise the default dir() logic is used and returns: for a module object: the module's attributes. for a class object: its attributes, and recursively the attributes of its bases. for any other object: its attributes, its class's attributes, and recursively the attributes of its class's base classes. ''' # In the Blender console dir(bpy) # ['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'app', 'context', 'data', 'ops', 'path', 'props', 'types', 'utils'] dir(bpy.data) #['__doc__', '__module__', '__slots__', 'actions', 'armatures', 'bl_rna', 'brushes', 'cameras', 'curves', 'filepath', 'fonts', 'grease_pencil', 'groups', 'images', 'is_dirty', 'is_saved', 'lamps', 'lattices', 'libraries', 'linestyles', 'masks', 'materials', 'meshes', 'metaballs', 'movieclips', 'node_groups', 'objects', 'particles', 'rna_type', 'scenes', 'screens', 'scripts', 'shape_keys', 'sounds', 'speakers', 'texts', 'textures', 'use_autopack', 'version', 'window_managers', 'worlds']