|  | @@ -0,0 +1,81 @@
 | 
	
		
			
				|  |  | +from typing import List, Dict, Tuple, Set
 | 
	
		
			
				|  |  | +from typing import Union
 | 
	
		
			
				|  |  | +from typing import Optional
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +'''
 | 
	
		
			
				|  |  | +Docstring - строка документирования.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Вызывается:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    help(abs)
 | 
	
		
			
				|  |  | +    abs.__doc__
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +В docstring попадет только первая строка из начала функции.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Слабая и сильная (строгая) типизация.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +В языках со строгой типизация (Python) с объектами определенных
 | 
	
		
			
				|  |  | +типов можно производить только ограниченный набор действий.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +В Python динамическая строгая типизация.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Аннотация типов в Python
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +foo: float        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +foo: int = 100
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +В функции содержится атрибут __annotations__ (содержит словарь аннотаций)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +'''
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def get_even(lst) -> list:
 | 
	
		
			
				|  |  | +    'Функция возвращает список из четных чисел списка lst'
 | 
	
		
			
				|  |  | +    even_lst = []
 | 
	
		
			
				|  |  | +    for elem in lst:
 | 
	
		
			
				|  |  | +        if elem % 2 == 0:
 | 
	
		
			
				|  |  | +            even_lst.append(elem)
 | 
	
		
			
				|  |  | +    return even_lst
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def func_1():
 | 
	
		
			
				|  |  | +    numbers: List[int] = [1, 2, 3]
 | 
	
		
			
				|  |  | +    languages: Dict = {}
 | 
	
		
			
				|  |  | +    temperature: Tuple = (1, 2, 3)
 | 
	
		
			
				|  |  | +    letters: Set[str] = set('qwerty')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    param_1: Union[int, float, bool]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    param_2: int | float | str
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def get_first_repeated_word(words: List[str]) -> Optional[str]:
 | 
	
		
			
				|  |  | +    'Находит первый дубль в списке'
 | 
	
		
			
				|  |  | +    foo = set()
 | 
	
		
			
				|  |  | +    for w in words:
 | 
	
		
			
				|  |  | +        if w in foo:
 | 
	
		
			
				|  |  | +            return w
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            foo.add(w)
 | 
	
		
			
				|  |  | +    return None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # for w in words:
 | 
	
		
			
				|  |  | +    #     if words.count(w) > 1:
 | 
	
		
			
				|  |  | +    #         return w
 | 
	
		
			
				|  |  | +    # return None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def main():
 | 
	
		
			
				|  |  | +    # print(get_even.__doc__)
 | 
	
		
			
				|  |  | +    print(get_first_repeated_word.__doc__)
 | 
	
		
			
				|  |  | +    print(get_first_repeated_word.__annotations__)
 | 
	
		
			
				|  |  | +    print(get_first_repeated_word(['ab', 'ca', 'bc', 'ca', 'ab', 'bc']))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if __name__ == '__main__':
 | 
	
		
			
				|  |  | +    main()
 |