TelenkovDmitry 5 months ago
parent
commit
1d9653f840
1 changed files with 81 additions and 0 deletions
  1. 81 0
      courses/python_func/docstring_1.py

+ 81 - 0
courses/python_func/docstring_1.py

@@ -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()