Important changes from Java
- When you pass an object to a function, and "reassign" it using its local function argument name, the outside objects won't get reassigned. This is because Python reassigns the local name only. This is a important difference from Java.
- To iterate over two lists at the same time, use the zip built-in function:
for a, b in zip(list1, list2):
- To use the condition ? a : b construct:
a if condition else b
- To cast a float to an integer, you can use the built-in int() function.
- Sample code to deal with an exception:
try: doSomething() except Exception, inst: print str(inst.args) print str(sys.exc_info())
This will give you information about the raised exception type.
Within a module, inside a function, you can access the module variables normally. However, assigning them is not possible (you would assign a local variable). To assign a module variable inside a function, you need to specify that the variable is global by using the global keyword.
This is quite strange!
- You don't need to explicitely declare class fields, as they are dynamically created the first time you assign them.
- Every class method should take as a first argument "self".
- Accessing an object attribute, when the attribute does not exist, results in an exception. Code like:
will not work as expected if myAttribute was not assigned. One easy solution is to define in the class initializer method (__init__) the attribute and set it equal to None.