Advertisement
Guest User

Untitled

a guest
Aug 27th, 2014
542
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.00 KB | None | 0 0
  1. Звёздочка (starred expression) для iterable и двойная звёздочка (double starred expression) для dict, делают "и вот это вот всё".
  2. Например:
  3. a, *b, c = range(10)
  4. # эквивалентно:
  5. a = 0; b = [1,2,3,4,5,6,7,8]; c = 9
  6.  
  7. foo(*(1, 2, 3, 4), *{'a': 5, 'b': 6})
  8. # эквивалентно:
  9. foo(1, 2, 3, 4, a=5, b=6)
  10.  
  11. Так же и в обратную сторону:
  12. def bar(*args, **kw): pass;
  13. bar(1, 2, 3, 4, a=5, b=6)
  14.  
  15. # эквивалентно:
  16. def bar(args, kw): pass;
  17. bar((1,2,3,4), {'a': 5, 'b': 6})
  18.  
  19. Что позволяет легко определять функции с неопределённым числом аргументов.
  20. def sum_(xs):
  21.     acc = 0
  22.     for x in xs: acc += x
  23.     retrun acc
  24.  
  25. $ sum_(0,1,2,3,4,5)
  26. 15
  27. $ sum_(*range(6))
  28. 15
  29.  
  30. А ещё бывает:
  31. def baz(x, y, z, *, a, b, c): pass
  32. a, b и c, могут быть переданы только как именованные аргументы.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement