```python def foo() -> int : return x ** 2 x = foo( 2 ) print(x) # 5 def foo( x : str, y : int ) -> str : ........... name = input('Ведите имя:') # - всегда строка! print(dir(name)) # - вывод атрибутов # ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] # ``` ```python # собираем все параметры в кортеж: def sum_nums(*args): print(args) print(type(args)) print(args[0]) return sum(args) print(sum_nums(2, 3, 7)) ``` ```python # аргументы с ключевыми словами - порядок не важен: def get_post_info(name, post_qty): info = f"{name} wrote {post_qty} posts" return info info = get_post_info(name='Vlapa', post_qty=50) print(info) ``` ```python # объединение аргументов в DICT (только именованные): def get_post_info(**person): print(person) print(type(person)) info = ( f"{person['name']} wrote " f"{person['post_qty']} posts" ) return info info = get_post_info(name='Vlapa', post_qty=50) print(info) ``` ```python # значение по умолчанию: def mult_by(value, multiplier=1): return value * multiplier print(mult_by(10, 2)) print(mult_by(5)) ``` ```python # from datetime import date def get_weekday(): return date.today().strftime('%A') def create_new_post(post, weekday=get_weekday()): post_copy = post.copy() post_copy['created_on_weekday'] = weekday return post_copy initial_post = { 'id': 234, 'author': 'Vlapa', } post_with_weekday = create_new_post(initial_post) ``` ```python # callback function def print_number_info(num): """ Print num information Args: num (int): Integer number """ if (num % 2) == 0: print("Число четное") else: print("Число НЕ четное") def print_square_num(num): print("Square of the num is", num * num) def process_number(num, callback_fn): callback_fn(num) entered_num = int(input("Введите любое целое число: ")) process_number(entered_num, print_number_info) process_number(entered_num, print_square_num) ``` ```python print(dir()) # все переменные области ``` ```python def greeting(greet): return lambda name: f"{greet}, {name}!" # def info(name): # return f"{greet}, {name}!" # return info morning_greeting = greeting("Good Morning") print(morning_greeting('Vlapa')) evening_greeting = greeting("Good Evening") print(evening_greeting('Vlapa')) ``` ====================================================== ### Голобурдин: ```python def chain_sum0(number): result = number def wrapper(number2=None): nonlocal result if number2 is None: return result result += number2 return wrapper return wrapper def chain_sum00(number): result = number def wrapper(number2=None): nonlocal result try: number2 = int(number2) except TypeError: return result result += number2 return wrapper return wrapper def chain_sum(number): def wrapper(number2=None): def inner(): wrapper.result += number2 return wrapper logic = { type(None): lambda: wrapper.result, int: inner } return logic[type(number2)]() wrapper.result = number return wrapper print(chain_sum(5)()) print(chain_sum(5)(2)()) print(chain_sum(5)(100)(-10)()) ```