====== Python ====== ====== OOP ====== ===== Call parent constuctor ====== super().__init__() ====== String formatting ====== * using the % operator (old) logger.debug('Got argument %s.' % arg) * str.format (new: string formatters) print("Sammy has {} balloons.".format(5)) print("Sammy has {} and {} balloons.".format(5, 7)) print("Sammy has {0} and {1} balloons.".format(5, 7)) print("Sammy has {1} and {0} balloons.".format(5, 7)) * interpolated strings print("{firstname} {lastname}".format(firstname="Horst", lastname="Gutmann")) * new f-strings in Python 3.6 name = 'Fred' age = 42 print(f'He said his name is {name} and he is {age} years old.') ===== logger ===== Logger is optimized to defer avaluation of arguments until it is needed, so for best performance use ''%'' formating. Instead of this: logger.error('oops caused by %s' % exc) do that: logger.error('oops caused by %s', exc) ====== Exceptions ====== * [[https://docs.python.org/3/library/exceptions.html#exception-hierarchy|exception-hierarchy]] * [[https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python/24065533#24065533|Manually raising (throwing) an exception in Python]] ===== Ignore exception ===== try: do_something() except Exception: pass