October 24, 2022
*args & **kwargs
*args применяется, когда необходимо передать в функцию неизвестное кол-во инструментов, которые будут переданы через tuple
def ten_percent_of_product_with_args(*args): product = 1 for number in args: product = product * number return product * 0.1 print(ten_percent_of_product_with_args(10, 20, 2, 1, 4, 345))
В случае использования позиционного аргумента, он ставится всегда на первое место:
def percent_of_product_with_args(percent, *args): product = 1 for number in args: product = product * number return product / 100 * percent print(percent_of_product_with_args(20, 10, 20, 2, 1, 4, 345))
В данном случае 20 из кортежа (20, 10, 20, 2, 1, 4, 345) относится к аргументу percent.
В кортеже могут содержаться как цифры так и строковые значения. См. ниже
def test(*args): return [i*3 for i in args] print(test('sheep', 'cat', 'dog')) # вывод: ['sheepsheepsheep', 'catcatcat', 'dogdogdog']
**kwargs
функция с **kwargs возвращает словарь.
def func_with_kwargs(**kwargs): print(kwargs) func_with_kwargs(first=1, second=2, third=3) # возвращает {'first': 1, 'second': 2, 'third': 3}
Еще примеры: def hello_with_kwargs(**kwargs): if 'name' in kwargs: print('Hello! Nice to meet you, {}'.format(kwargs['name'])) else: print('Hello! What is your name?') hello_with_kwargs(gender='male', age=24, name='Jack')
здесь передали аргументами пары значений, которые в функции превратились в словарь. Ниже простой пример, который показывает суть:
def func_with_kwargs(**kwargs): print(kwargs) func_with_kwargs(first=1, second=2, third=3)
Также можно использовать вместе *args и **kwargs:
def func_with_args_and_kwargs(*args, **kwargs): print('I would like {} {}'.format(args[0], kwargs['food']))
func_with_args_and_kwargs('one','two',drink='coffee', food='sandwich')
October 24, 2022, 19:51
0 views
0 replies
0 reposts