#-*-coding:utf-8-*-
def select_ad(third_party_ads, user_preferences):
     if not third_party_ads:
         return None    
     if not user_preferences:
         return None    
     if not best_ad:
         return best_ad
---

def append_to(element, to=[]):
    to.append(element)
    return to
---

def append_to(element, to=None):
    if to is None:
        to = []
    to.append(element)
    return to
---

def time_consuming_function(x, y, cache={}):
    args = (x, y)
    if args in cache:
        return cache[args]

    cache[args] = result
    return result
---
def create_multipliers():
    return [lambda x : i * x for i in range(5)]
---

def create_multipliers():
    multipliers = []
    for i in range(5):
        def multiplier(x):
            return i * x
        multipliers.append(multiplier)
    return multipliers
---

def create_multipliers():
    return [lambda x, i=i : i * x for i in range(5)]
---

from functools import partial
from operator import mul
def create_multipliers():
    return [partial(mul, i) for i in range(5)]
---

#-*-coding: utf-8-*-
# test_example.py
import unittest
def fun(x):
    return x + 1
class MyTest(unittest.TestCase):
    def test_that_fun_adds_one(self):
        self.assertEqual(fun(3), 4)
class MySecondTest(unittest.TestCase):
    def test_that_fun_fails_when_not_adding_number(self):
        self.assertRaises(TypeError, fun, "Pomnóż sześć przez dziewięć")
---

#-*- coding: utf-8 -*-
import unittest.mock as mock
def mock_search(self):
    class MockSearchQuerySet(SearchQuerySet):
        def __iter__(self):
            return iter(["foo", "bar", "baz"])
    return MockSearchQuerySet()
@mock.patch('myapp.SearchForm.search', mock_search)
def test_new_watchlist_activities(self):
      self.assertEqual(len(myapp.get_search_results(q="fish")), 3)
---

def square(x):
    """Podnosi x do kwadratu.
    >>> square(2)
    4
    >>> square(-2)
    4
    """
    return x * x
    if __name__ == '__main__':
    import doctest
    doctest.testmod()

---
import logging
try: # Python 2.7+
    from logging import NullHandler
except ImportError:
    class NullHandler(logging.Handler):
        def emit(self, record):
            pass
logging.getLogger(__name__).addHandler(NullHandler())
---

import logging
from logging.config import dictConfig
logging_config = dict(
    version = 1,
    formatters = {
        'f': {'format':
              '%(asctime)s %(name)-12s %(levelname)-8s %(message)s'}
        },
    handlers = {
         'h': {'class': 'logging.StreamHandler',
               'formatter': 'f',
               'level': logging.DEBUG}
         },
    loggers = {
        'root': {'handlers': ['h'],
        'level': logging.DEBUG}
        }
)
dictConfig(logging_config)

logger = logging.getLogger()
logger.debug('często robi dobry posiłek z %s', 'odwiedzających turystów')
---

import logging
logger = logging.getLogger()
handler = logging.StreamHandler()
formatter = logging.Formatter(
        '%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)

logger.debug('często robi dobry posiłek z %s', 'odwiedzających turystów')
---



