Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Звёздочка (starred expression) для iterable и двойная звёздочка (double starred expression) для dict, делают "и вот это вот всё".
- Например:
- a, *b, c = range(10)
- # эквивалентно:
- a = 0; b = [1,2,3,4,5,6,7,8]; c = 9
- foo(*(1, 2, 3, 4), *{'a': 5, 'b': 6})
- # эквивалентно:
- foo(1, 2, 3, 4, a=5, b=6)
- Так же и в обратную сторону:
- def bar(*args, **kw): pass;
- bar(1, 2, 3, 4, a=5, b=6)
- # эквивалентно:
- def bar(args, kw): pass;
- bar((1,2,3,4), {'a': 5, 'b': 6})
- Что позволяет легко определять функции с неопределённым числом аргументов.
- def sum_(xs):
- acc = 0
- for x in xs: acc += x
- retrun acc
- $ sum_(0,1,2,3,4,5)
- 15
- $ sum_(*range(6))
- 15
- А ещё бывает:
- def baz(x, y, z, *, a, b, c): pass
- a, b и c, могут быть переданы только как именованные аргументы.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement