====== Python snippets ====== ===== Getters & setters ===== import flask class MyFlask(flask.Flask): @property def static_folder(self): if self.config.get('STATIC_FOLDER') is not None: return os.path.join(self.root_path, self.config.get('STATIC_FOLDER')) @static_folder.setter def static_folder(self, value): self.config.get('STATIC_FOLDER') = value ===== Ignore all warnings ===== import warnings from exceptions import Warning warnings.simplefilter('ignore', Warning) ===== Import a class from string ===== def dynamic_import(name): components = name.split('.') mod = __import__(components[0]) for comp in components[1:]: mod = getattr(mod, comp) return mod ===== Tricks ===== # Different ways to test multiple # flags at once in Python x, y, z = 0, 1, 0 if x == 1 or y == 1 or z == 1: print('passed') if 1 in (x, y, z): print('passed') # These only test for truthiness: if x or y or z: print('passed') if any((x, y, z)): print('passed') ===== Conditional tricks (Short circuit) ===== You can use the conditional operators ''and'' and ''or'' for deciding how to execute code. Next piece won't print ''hola''. def foo(): print('hola') False and foo() ===== See the low level actions ===== We can see the low level actions of a function with the ''dis'' package: >>> def func(a): ... a += 10 ... return a ... >>> import dis >>> dis.dis(func) 2 0 LOAD_FAST 0 (a) 3 LOAD_CONST 1 (10) 6 INPLACE_ADD 7 STORE_FAST 0 (a) 3 10 LOAD_FAST 0 (a) 13 RETURN_VALUE