docstring_1.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. from typing import List, Dict, Tuple, Set
  2. from typing import Union
  3. from typing import Optional
  4. '''
  5. Docstring - строка документирования.
  6. Вызывается:
  7. help(abs)
  8. abs.__doc__
  9. В docstring попадет только первая строка из начала функции.
  10. Слабая и сильная (строгая) типизация.
  11. В языках со строгой типизация (Python) с объектами определенных
  12. типов можно производить только ограниченный набор действий.
  13. В Python динамическая строгая типизация.
  14. Аннотация типов в Python
  15. foo: float
  16. foo: int = 100
  17. В функции содержится атрибут __annotations__ (содержит словарь аннотаций)
  18. '''
  19. def get_even(lst) -> list:
  20. 'Функция возвращает список из четных чисел списка lst'
  21. even_lst = []
  22. for elem in lst:
  23. if elem % 2 == 0:
  24. even_lst.append(elem)
  25. return even_lst
  26. def func_1():
  27. numbers: List[int] = [1, 2, 3]
  28. languages: Dict = {}
  29. temperature: Tuple = (1, 2, 3)
  30. letters: Set[str] = set('qwerty')
  31. param_1: Union[int, float, bool]
  32. param_2: int | float | str
  33. def get_first_repeated_word(words: List[str]) -> Optional[str]:
  34. 'Находит первый дубль в списке'
  35. foo = set()
  36. for w in words:
  37. if w in foo:
  38. return w
  39. else:
  40. foo.add(w)
  41. return None
  42. def rotate(lst: list[int | float], shift: int = 1) -> list[int | float] :
  43. 'Функция выполняет циклический сдвиг списка на shift позиций вправо(shift>0) или влево(shift<0)'
  44. shifted_list = []
  45. if shift > len(lst):
  46. foo = shift%len(lst)
  47. if shift < 0:
  48. foo = - foo - 1
  49. else:
  50. foo = shift
  51. if shift < 0:
  52. shifted_list.extend(lst[-foo:])
  53. shifted_list.extend(lst[:-foo])
  54. elif shift > 0:
  55. shifted_list.extend(lst[-foo:])
  56. shifted_list.extend(lst[:-foo])
  57. return shifted_list
  58. def main():
  59. # print(get_even.__doc__)
  60. # print(get_first_repeated_word.__doc__)
  61. # print(get_first_repeated_word.__annotations__)
  62. # print(get_first_repeated_word(['ab', 'ca', 'bc', 'ca', 'ab', 'bc']))
  63. print(rotate([1, 2, 3, 4, 5, 6], 2))
  64. print(rotate([1, 2, 3, 4, 5, 6], -10))
  65. print(rotate([1, 2, 3, 4, 5, 6, 7], 21))
  66. print(rotate([1, 2, 3, 4, 5, 6], -3))
  67. if __name__ == '__main__':
  68. main()