Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Naming, Encapsulation
- import operator
- from functools import reduce
- class AnyClass:
- def __init__(self):
- self.a = 1
- self._a = 2
- self.__a = 3
- self.__a__ = 4
- any_object = AnyClass()
- print(any_object.a) # OK
- print(any_object._a) # OK
- print(any_object._AnyClass__a) # OK
- print(any_object.__a__) # OK
- # Iterators
- class CustomIterator():
- def __iter__(self):
- self.pointer = 0
- return self
- def __next__(self):
- self.pointer += 1
- if self.pointer == 10:
- raise StopIteration
- return self.pointer
- custom_iterator = CustomIterator()
- for i in custom_iterator:
- print(i)
- # Generators
- def new_number():
- i = 0
- while True:
- i += 1
- yield i
- # return i
- a = new_number()
- print(a) # <generator object new_number at 0x102f52660>
- print(next(a)) # 1
- print(next(a)) # StopIteration if `return i` present else 2
- print(next(a)) # 3
- # Decorators
- def decorator(func):
- def inner(a, b):
- print('decorator in')
- result = func(a, b)
- print('decorator out')
- return result
- return inner
- def some_function(a, b):
- print(a + b)
- # some_function = decorator(some_function)
- # some_function(1, 2)
- # equals to
- # @decorator
- # def some_function():
- # print('Yooo I\'m a function')
- def outer_decorator(arg1, arg2):
- def decorator(func):
- def sub_inner(a, b):
- for i in range(arg1):
- print('decorator in')
- result = func(a, b)
- for i in range(arg2):
- print('decorator out')
- return result
- return sub_inner
- return decorator
- def summ(a, b):
- print(a + b)
- # @outer_decorator(2, 2)
- # def summ(a, b):
- # print(a, b)
- # equals to
- summ = outer_decorator(2, 2)(summ)(5, 5)
- # Context managers (with)
- class ContextResolver:
- def __enter__(self):
- print('In')
- return 1
- def __exit__(self, exc_type, exc_val, exc_tb):
- print('Out')
- cr = ContextResolver()
- with cr as a:
- print(a)
- # In
- # 1
- # Out
- # Scopes (global, local, enclosed)
- some_var = 10
- def func():
- global some_var # global scope
- some_var += 1
- return some_var
- print(func())
- def outer_function():
- some_var = 5
- def inner_function():
- global some_var # nonlocal some_var
- some_var += 1
- return some_var
- return inner_function()
- print(outer_function())
- # Map, reduce, filter
- def some_func(arg):
- return str(arg) + ' lol it was made in map'
- print(list(map(some_func, (1, 2, 3)))) # ['1 lol it was made in map', '2 lol it was made in map', '3 lol it was made in map']
- def some_definer(arg):
- if isinstance(arg, str):
- return arg # if true it its not getting filtered
- print(list(filter(some_definer, (1, 2, 3, 'Max', 'Josh')))) # ['Max', 'Josh']
- print(reduce(operator.add, [1, 2, 3, 4, 5])) # 15
- SUBD = '''
- Atomicity — Атомарность
- Атомарность гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.
- Consistency — Согласованность
- Транзакция, достигающая своего нормального завершения (EOT — end of transaction, завершение транзакции) и тем самым фиксирующая свои результаты, сохраняет согласованность базы данных. Другими словами, каждая успешная транзакция по определению фиксирует только допустимые результаты. Это условие является необходимым для поддержки четвёртого свойства.
- Isolation — Изолированность
- Во время выполнения транзакции параллельные транзакции не должны оказывать влияния на её результат. Изолированность — требование дорогое, поэтому в реальных БД существуют режимы, не полностью изолирующие транзакцию (уровни изолированности Repeatable Read и ниже).
- Durability — Прочность
- Независимо от проблем на нижних уровнях (к примеру, обесточивание системы или сбои в оборудовании) изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу. Другими словами, если пользователь получил подтверждение от системы, что транзакция выполнена, он может быть уверен, что сделанные им изменения не будут отменены из-за какого-либо сбоя.
- '''
- 1_normal_forma = """
- В таблице не должно быть дублирующих строк
- В каждой ячейке таблицы хранится атомарное значение (одно не составное значение)
- В столбце хранятся данные одного типа
- Отсутствуют массивы и списки в любом виде
- """
- 2_normal_forma = """
- Таблица должна находиться в первой нормальной форме
- Таблица должна иметь ключ
- Все неключевые столбцы таблицы должны зависеть от полного ключа (в случае если он составной)
- """
- 3_normal_forma = """
- Требование третьей нормальной формы (3NF) заключается в том, чтобы в таблицах отсутствовала транзитивная зависимость.
- Транзитивная зависимость – это когда неключевые столбцы зависят от значений других неключевых столбцов.
- """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement